From 6da82e03be68bf8335477d70e075866554f2dbb5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 8 Apr 2012 23:18:36 +0200 Subject: [PATCH 01/22] Uniformize code --- htdocs/install/check.php | 8 ++++---- htdocs/install/etape1.php | 7 ++++--- htdocs/install/etape2.php | 7 ++++--- htdocs/install/etape4.php | 14 +++++++------- htdocs/install/etape5.php | 6 ++++-- htdocs/install/fileconf.php | 6 +++--- 6 files changed, 26 insertions(+), 22 deletions(-) diff --git a/htdocs/install/check.php b/htdocs/install/check.php index c48f4c7f599..dae2a0e4a8a 100644 --- a/htdocs/install/check.php +++ b/htdocs/install/check.php @@ -35,11 +35,11 @@ $langs->setDefaultLang($setuplang); $langs->load("install"); -// Init "forced values" to nothing. "forced values" are used after an doliwamp install wizard. -if (! isset($force_install_dolibarrlogin)) $force_install_dolibarrlogin=''; +// Now we load forced value from install.forced.php file. $useforcedwizard=false; -if (@file_exists("./install.forced.php")) { $useforcedwizard=true; include_once("./install.forced.php"); } -else if (@file_exists("/etc/dolibarr/install.forced.php")) { $useforcedwizard=include_once("/etc/dolibarr/install.forced.php"); } +$forcedfile="./install.forced.php"; +if ($conffile == "/etc/dolibarr/conf.php") $forcedfile="/etc/dolibarr/install.forced.php"; +if (@file_exists($forcedfile)) { $useforcedwizard=true; include_once($forcedfile); } dolibarr_install_syslog("Dolibarr install/upgrade process started"); diff --git a/htdocs/install/etape1.php b/htdocs/install/etape1.php index b57b0e8a1c3..9859b7ed02e 100644 --- a/htdocs/install/etape1.php +++ b/htdocs/install/etape1.php @@ -43,10 +43,11 @@ $passroot=isset($_POST["db_pass_root"])?$_POST["db_pass_root"]:""; // Repertoire des pages dolibarr $main_dir=isset($_POST["main_dir"])?trim($_POST["main_dir"]):''; -// Init "forced values" to nothing. "forced values" are used after an doliwamp install wizard. +// Now we load forced value from install.forced.php file. $useforcedwizard=false; -if (file_exists("./install.forced.php")) { $useforcedwizard=true; include_once("./install.forced.php"); } -else if (file_exists("/etc/dolibarr/install.forced.php")) { $useforcedwizard=include_once("/etc/dolibarr/install.forced.php"); } +$forcedfile="./install.forced.php"; +if ($conffile == "/etc/dolibarr/conf.php") $forcedfile="/etc/dolibarr/install.forced.php"; +if (@file_exists($forcedfile)) { $useforcedwizard=true; include_once($forcedfile); } dolibarr_install_syslog("--- etape1: Entering etape1.php page"); diff --git a/htdocs/install/etape2.php b/htdocs/install/etape2.php index 59ea5ec8bba..b8373847c25 100644 --- a/htdocs/install/etape2.php +++ b/htdocs/install/etape2.php @@ -52,10 +52,11 @@ if ($dolibarr_main_db_type == "pgsql") $choix=2; if ($dolibarr_main_db_type == "mssql") $choix=3; //if (empty($choix)) dol_print_error('','Database type '.$dolibarr_main_db_type.' not supported into etape2.php page'); -// Init "forced values" to nothing. "forced values" are used after a Doliwamp install wizard. +// Now we load forced value from install.forced.php file. $useforcedwizard=false; -if (file_exists("./install.forced.php")) { $useforcedwizard=true; include_once("./install.forced.php"); } -else if (file_exists("/etc/dolibarr/install.forced.php")) { $useforcedwizard=include_once("/etc/dolibarr/install.forced.php"); } +$forcedfile="./install.forced.php"; +if ($conffile == "/etc/dolibarr/conf.php") $forcedfile="/etc/dolibarr/install.forced.php"; +if (@file_exists($forcedfile)) { $useforcedwizard=true; include_once($forcedfile); } dolibarr_install_syslog("--- etape2: Entering etape2.php page"); diff --git a/htdocs/install/etape4.php b/htdocs/install/etape4.php index d9f27fe4e32..eb392ae2e86 100644 --- a/htdocs/install/etape4.php +++ b/htdocs/install/etape4.php @@ -36,11 +36,11 @@ $langs->setDefaultLang($setuplang); $langs->load("admin"); $langs->load("install"); -// Init "forced values" to nothing. "forced values" are used after an doliwamp install wizard. -if (! isset($force_install_dolibarrlogin)) $force_install_dolibarrlogin=''; +// Now we load forced value from install.forced.php file. $useforcedwizard=false; -if (file_exists("./install.forced.php")) { $useforcedwizard=true; include_once("./install.forced.php"); } -else if (file_exists("/etc/dolibarr/install.forced.php")) { $useforcedwizard=include_once("/etc/dolibarr/install.forced.php"); } +$forcedfile="./install.forced.php"; +if ($conffile == "/etc/dolibarr/conf.php") $forcedfile="/etc/dolibarr/install.forced.php"; +if (@file_exists($forcedfile)) { $useforcedwizard=true; include_once($forcedfile); } dolibarr_install_syslog("--- etape4: Entering etape4.php page"); @@ -74,7 +74,7 @@ $db=getDoliDBInstance($conf->db->type,$conf->db->host,$conf->db->user,$conf->db- if ($db->ok == 1) { print ''.$langs->trans("DolibarrAdminLogin").' :'; - print ''; + print ''; print ''.$langs->trans("Password").' :'; print ''; print ''.$langs->trans("PasswordAgain").' :'; @@ -106,9 +106,9 @@ if ($db->ok == 1) } -$db->close(); - dolibarr_install_syslog("--- install/etape4.php end", LOG_INFO); pFooter($err,$setuplang); + +$db->close(); ?> diff --git a/htdocs/install/etape5.php b/htdocs/install/etape5.php index 49d8259b0de..f63eafe1ef3 100644 --- a/htdocs/install/etape5.php +++ b/htdocs/install/etape5.php @@ -61,9 +61,11 @@ if (! isset($force_install_databasepass)) $force_install_databasepass=''; if (! isset($force_install_databaserootlogin)) $force_install_databaserootlogin=''; if (! isset($force_install_databaserootpass)) $force_install_databaserootpass=''; if (! isset($force_install_lockinstall)) $force_install_lockinstall=''; +// Now we load forced value from install.forced.php file. $useforcedwizard=false; -if (file_exists("./install.forced.php")) { $useforcedwizard=true; include_once("./install.forced.php"); } -else if (file_exists("/etc/dolibarr/install.forced.php")) { $useforcedwizard=include_once("/etc/dolibarr/install.forced.php"); } +$forcedfile="./install.forced.php"; +if ($conffile == "/etc/dolibarr/conf.php") $forcedfile="/etc/dolibarr/install.forced.php"; +if (@file_exists($forcedfile)) { $useforcedwizard=true; include_once($forcedfile); } dolibarr_install_syslog("--- etape5: Entering etape5.php page", LOG_INFO); diff --git a/htdocs/install/fileconf.php b/htdocs/install/fileconf.php index 8fe90ac479f..44dc2011de1 100644 --- a/htdocs/install/fileconf.php +++ b/htdocs/install/fileconf.php @@ -53,14 +53,14 @@ if (! isset($force_install_databaserootlogin)) $force_install_databaserootlogin= if (! isset($force_install_databaserootpass)) $force_install_databaserootpass=''; // Now we load forced value from install.forced.php file. $useforcedwizard=false; -if (file_exists("./install.forced.php")) { $useforcedwizard=true; include_once("./install.forced.php"); } -else if (file_exists("/etc/dolibarr/install.forced.php")) { $useforcedwizard=include_once("/etc/dolibarr/install.forced.php"); } +$forcedfile="./install.forced.php"; +if ($conffile == "/etc/dolibarr/conf.php") $forcedfile="/etc/dolibarr/install.forced.php"; +if (@file_exists($forcedfile)) { $useforcedwizard=true; include_once($forcedfile); } dolibarr_install_syslog("Fileconf: Entering fileconf.php page"); - /* * View */ From 70202f2c0cfb1b012f287c496b0fa5b31aa426d4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 8 Apr 2012 23:30:56 +0200 Subject: [PATCH 02/22] New logo --- htdocs/theme/dolibarr_logo.png | Bin 12485 -> 19399 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/htdocs/theme/dolibarr_logo.png b/htdocs/theme/dolibarr_logo.png index da9baa40406ba09992f5c70611dc24f751812c5b..985cc376ffd8857de9661bbdb3dc25f4f9c94768 100755 GIT binary patch literal 19399 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�Dv@qQ*Qo{)$==e`^Jx6HK6EJ0pnR$`9_KL-ue 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 From d9b12f48028db657b601cc0560e39be81241868a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 8 Apr 2012 23:31:54 +0200 Subject: [PATCH 03/22] Fix: rounding --- htdocs/compta/resultat/index.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/compta/resultat/index.php b/htdocs/compta/resultat/index.php index 928c74e24ce..764bab70164 100644 --- a/htdocs/compta/resultat/index.php +++ b/htdocs/compta/resultat/index.php @@ -481,7 +481,7 @@ for ($mois = 1+$nb_mois_decalage ; $mois <= 12+$nb_mois_decalage ; $mois++) print ' '; if ($decaiss_ttc[$case] != 0) { - print ''.price($decaiss_ttc[$case]).''; + print ''.price($decaiss_ttc[$case],'MT').''; $totsorties[$annee]+=$decaiss_ttc[$case]; } print ""; @@ -489,7 +489,7 @@ for ($mois = 1+$nb_mois_decalage ; $mois <= 12+$nb_mois_decalage ; $mois++) print ' '; if ($encaiss_ttc[$case] != 0) { - print ''.price($encaiss_ttc[$case]).''; + print ''.price($encaiss_ttc[$case],'MT').''; $totentrees[$annee]+=$encaiss_ttc[$case]; } print ""; @@ -505,8 +505,8 @@ print ''.$langs->trans("TotalTTC").''; for ($annee = $year_start ; $annee <= $year_end ; $annee++) { $nbcols+=2; - print ''.(isset($totsorties[$annee])?price($totsorties[$annee]):' ').''; - print ''.(isset($totentrees[$annee])?price($totentrees[$annee]):' ').''; + print ''.(isset($totsorties[$annee])?price($totsorties[$annee],'MT'):' ').''; + print ''.(isset($totentrees[$annee])?price($totentrees[$annee],'MT'):' ').''; } print "\n"; @@ -523,7 +523,7 @@ for ($annee = $year_start ; $annee <= $year_end ; $annee++) print ' '; if (isset($totentrees[$annee]) || isset($totsorties[$annee])) { - print price($totentrees[$annee]-$totsorties[$annee]).''; + print price($totentrees[$annee]-$totsorties[$annee],'MT').''; // print ' '; } } From 2d9ed89a8d10571e89baaf264403843ec3c8bd31 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 9 Apr 2012 01:02:36 +0200 Subject: [PATCH 04/22] Fix: Back page to list of contacts --- htdocs/comm/action/fiche.php | 4 ++-- htdocs/langs/en_US/companies.lang | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/comm/action/fiche.php b/htdocs/comm/action/fiche.php index 9aec3e15b68..d9d7b2fb550 100644 --- a/htdocs/comm/action/fiche.php +++ b/htdocs/comm/action/fiche.php @@ -420,7 +420,7 @@ if ($action == 'create') print '
'; print ''; print ''; - print ''; + print ''; if (GETPOST("actioncode") == 'AC_RDV') print_fiche_titre($langs->trans("AddActionRendezVous")); else print_fiche_titre($langs->trans("AddAnAction")); @@ -673,7 +673,7 @@ if ($id) print ''; print ''; print ''; - print ''; + print ''; print ''; diff --git a/htdocs/langs/en_US/companies.lang b/htdocs/langs/en_US/companies.lang index fad0395c2d3..7786a8ef3fe 100644 --- a/htdocs/langs/en_US/companies.lang +++ b/htdocs/langs/en_US/companies.lang @@ -273,6 +273,7 @@ LastProspect=Last ProspectToContact=Prospect to contact CompanyDeleted=Company "%s" deleted from database. ListOfContacts=List of contacts/addresses +ListOfContactsAddresses=List of contacts/adresses ListOfProspectsContacts=List of prospect contacts ListOfCustomersContacts=List of customer contacts ListOfSuppliersContacts=List of supplier contacts From 60e9bc9e8edb68625244d4273017980c97b2632e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 9 Apr 2012 01:20:33 +0200 Subject: [PATCH 05/22] Fix: Rounding --- htdocs/compta/resultat/index.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/compta/resultat/index.php b/htdocs/compta/resultat/index.php index 764bab70164..bbb6c5511be 100644 --- a/htdocs/compta/resultat/index.php +++ b/htdocs/compta/resultat/index.php @@ -481,7 +481,7 @@ for ($mois = 1+$nb_mois_decalage ; $mois <= 12+$nb_mois_decalage ; $mois++) print '"; @@ -489,7 +489,7 @@ for ($mois = 1+$nb_mois_decalage ; $mois <= 12+$nb_mois_decalage ; $mois++) print '"; @@ -505,8 +505,8 @@ print ''; for ($annee = $year_start ; $annee <= $year_end ; $annee++) { $nbcols+=2; - print ''; - print ''; + print ''; + print ''; } print "\n"; @@ -523,7 +523,7 @@ for ($annee = $year_start ; $annee <= $year_end ; $annee++) print ''; + print price(price2num($totentrees[$annee]-$totsorties[$annee],'MT')).''; // print ''; } } From 1ec9125ff9d9f229a88be27e66b5560c906b5b38 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 9 Apr 2012 16:51:17 +0200 Subject: [PATCH 06/22] Move to 3.3 alpha --- ChangeLog | 6 +++++- build/debian/changelog | 2 +- build/doxygen/dolibarr-doxygen.doxyfile | 2 +- build/exe/doliwamp/doliwamp.iss | 4 ++-- build/makepack-dolibarr.pl | 4 ++-- build/perl/virtualmin/dolibarr.pl | 2 +- build/rpm/dolibarr_fedora.spec | 2 +- build/rpm/dolibarr_generic.spec | 2 +- build/rpm/dolibarr_mandriva.spec | 2 +- build/rpm/dolibarr_opensuse.spec | 2 +- htdocs/filefunc.inc.php | 2 +- htdocs/install/inc.php | 2 +- htdocs/support/inc.php | 2 +- 13 files changed, 19 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index b8c81a65160..644be54c311 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,9 +2,13 @@ English Dolibarr ChangeLog -------------------------------------------------------------- +***** ChangeLog for 3.3 compared to 3.2 ***** + + + ***** ChangeLog for 3.2 compared to 3.1 ***** WARNING: PHP lower than 5.x are no more supported. -WARNING: Because of a major datastructure change onto supplier prices tabkes, be aware +WARNING: Because of a major datastructure change onto supplier prices tables, be aware to make a backup of your database before making upgrade. For users: diff --git a/build/debian/changelog b/build/debian/changelog index 3b1aeb0907f..3e7f7fa5e91 100644 --- a/build/debian/changelog +++ b/build/debian/changelog @@ -1,4 +1,4 @@ -dolibarr (3.2.0+nmu1) unstable; urgency=low +dolibarr (3.3.0+nmu1) unstable; urgency=low * Non-maintainer upload. * New upstream release. diff --git a/build/doxygen/dolibarr-doxygen.doxyfile b/build/doxygen/dolibarr-doxygen.doxyfile index 772e3f97a11..690b5daf1a2 100644 --- a/build/doxygen/dolibarr-doxygen.doxyfile +++ b/build/doxygen/dolibarr-doxygen.doxyfile @@ -31,7 +31,7 @@ PROJECT_NAME = dolibarr # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 3.2.0 +PROJECT_NUMBER = 3.3.0 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. diff --git a/build/exe/doliwamp/doliwamp.iss b/build/exe/doliwamp/doliwamp.iss index d0191e7f785..ba3332f1e2b 100644 --- a/build/exe/doliwamp/doliwamp.iss +++ b/build/exe/doliwamp/doliwamp.iss @@ -17,9 +17,9 @@ ; ----- Change this ----- AppName=DoliWamp ; DoliWamp-x.x.x or DoliWamp-x.x.x-dev or DoliWamp-x.x.x-beta -AppVerName=DoliWamp-3.2.0-beta +AppVerName=DoliWamp-3.3.0-alpha ; DoliWamp-x.x x or DoliWamp-x.x.x-dev or DoliWamp-x.x.x-beta -OutputBaseFilename=DoliWamp-3.2.0-beta +OutputBaseFilename=DoliWamp-3.3.0-alpha ; Define full path from wich all relative path are defined ; You must modify this to put here your dolibarr root directory SourceDir=c:\Documents and Settings\ldestail\git\dolibarr diff --git a/build/makepack-dolibarr.pl b/build/makepack-dolibarr.pl index f1d7bed8418..7fdb6927509 100644 --- a/build/makepack-dolibarr.pl +++ b/build/makepack-dolibarr.pl @@ -9,8 +9,8 @@ use Cwd; $PROJECT="dolibarr"; $MAJOR="3"; -$MINOR="2"; -$BUILD="0-beta"; # Mettre x pour release, x-dev pour dev, x-beta pour beta, x-rc pour release candidate +$MINOR="3"; +$BUILD="0-alpha"; # Mettre x pour release, x-dev pour dev, x-beta pour beta, x-rc pour release candidate $RPMSUBVERSION="auto"; # auto use value found into BUILD @LISTETARGET=("TGZ","ZIP","RPM_GENERIC","RPM_FEDORA","RPM_MANDRIVA","RPM_OPENSUSE","DEB","APS","EXEDOLIWAMP","SNAPSHOT"); # Possible packages diff --git a/build/perl/virtualmin/dolibarr.pl b/build/perl/virtualmin/dolibarr.pl index 35de30e9868..b6c42c9997a 100644 --- a/build/perl/virtualmin/dolibarr.pl +++ b/build/perl/virtualmin/dolibarr.pl @@ -30,7 +30,7 @@ return "Regis Houssin"; # script_dolibarr_versions() sub script_dolibarr_versions { -return ( "3.2.0", "3.1.0", "3.0.1", "2.9.0" ); +return ( "3.3.0", "3.2.0", "3.1.0", "3.0.1", "2.9.0" ); } sub script_dolibarr_category diff --git a/build/rpm/dolibarr_fedora.spec b/build/rpm/dolibarr_fedora.spec index d6de1481eb5..270e8978713 100755 --- a/build/rpm/dolibarr_fedora.spec +++ b/build/rpm/dolibarr_fedora.spec @@ -292,5 +292,5 @@ fi %changelog -* Wed Mar 4 2012 Laurent Destailleur 3.2.0-0.1.a +* Wed Mar 4 2012 Laurent Destailleur 3.3.0-0.1.a - Initial version (#723326) diff --git a/build/rpm/dolibarr_generic.spec b/build/rpm/dolibarr_generic.spec index b6fc58ab8bc..acb4ffb4a3a 100755 --- a/build/rpm/dolibarr_generic.spec +++ b/build/rpm/dolibarr_generic.spec @@ -348,5 +348,5 @@ fi %changelog -* Wed Mar 4 2012 Laurent Destailleur 3.2.0-0.1.a +* Wed Mar 4 2012 Laurent Destailleur 3.3.0-0.1.a - Initial version (#723326) diff --git a/build/rpm/dolibarr_mandriva.spec b/build/rpm/dolibarr_mandriva.spec index 32989981daf..874d21e50e3 100755 --- a/build/rpm/dolibarr_mandriva.spec +++ b/build/rpm/dolibarr_mandriva.spec @@ -281,5 +281,5 @@ fi %changelog -* Wed Mar 4 2012 Laurent Destailleur 3.2.0-0.1.a +* Wed Mar 4 2012 Laurent Destailleur 3.3.0-0.1.a - Initial version (#723326) diff --git a/build/rpm/dolibarr_opensuse.spec b/build/rpm/dolibarr_opensuse.spec index 67aaf05d540..63b8608ec83 100755 --- a/build/rpm/dolibarr_opensuse.spec +++ b/build/rpm/dolibarr_opensuse.spec @@ -286,5 +286,5 @@ fi %changelog -* Wed Mar 4 2012 Laurent Destailleur 3.2.0-0.1.a +* Wed Mar 4 2012 Laurent Destailleur 3.3.0-0.1.a - Initial version (#723326) diff --git a/htdocs/filefunc.inc.php b/htdocs/filefunc.inc.php index 98a340d87fd..b44b363f751 100755 --- a/htdocs/filefunc.inc.php +++ b/htdocs/filefunc.inc.php @@ -29,7 +29,7 @@ * \brief File that include conf.php file and commons lib like functions.lib.php */ -if (! defined('DOL_VERSION')) define('DOL_VERSION','3.2.0-beta'); // Also defined in htdocs/install/inc.php (Ex: x.y.z-alpha, x.y.z) +if (! defined('DOL_VERSION')) define('DOL_VERSION','3.3.0-alpha'); // Also defined in htdocs/install/inc.php (Ex: x.y.z-alpha, x.y.z) if (! defined('EURO')) define('EURO',chr(128)); // Define syslog constants diff --git a/htdocs/install/inc.php b/htdocs/install/inc.php index e3c5232bd8b..5e328dd3b37 100644 --- a/htdocs/install/inc.php +++ b/htdocs/install/inc.php @@ -24,7 +24,7 @@ * \brief File that define environment for support pages */ -define('DOL_VERSION','3.2.0-beta'); // Also defined in htdocs/master.inc.php (Ex: x.y.z-alpha, x.y.z) +define('DOL_VERSION','3.3.0-alpha'); // Also defined in htdocs/master.inc.php (Ex: x.y.z-alpha, x.y.z) // Define DOL_DOCUMENT_ROOT an ADODB_PATH used for install/upgrade process if (! defined('DOL_DOCUMENT_ROOT')) define('DOL_DOCUMENT_ROOT', '..'); diff --git a/htdocs/support/inc.php b/htdocs/support/inc.php index 222f5a807e2..e2d3935a23c 100644 --- a/htdocs/support/inc.php +++ b/htdocs/support/inc.php @@ -24,7 +24,7 @@ * \brief File that define environment for support pages */ -define('DOL_VERSION','3.2.0-beta'); // Also defined in htdocs/master.inc.php +define('DOL_VERSION','3.3.0-alpha'); // Also defined in htdocs/master.inc.php // Define DOL_DOCUMENT_ROOT an ADODB_PATH used for install/upgrade process if (! defined('DOL_DOCUMENT_ROOT')) define('DOL_DOCUMENT_ROOT', '..'); From 380a8109e89b72be765013a505acf10a4a5e1759 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Mon, 9 Apr 2012 22:27:40 +0200 Subject: [PATCH 07/22] Fix: security --- htdocs/admin/tools/export.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/htdocs/admin/tools/export.php b/htdocs/admin/tools/export.php index 644af28bbf6..1b65caf280f 100644 --- a/htdocs/admin/tools/export.php +++ b/htdocs/admin/tools/export.php @@ -28,14 +28,14 @@ require_once(DOL_DOCUMENT_ROOT."/core/class/html.formfile.class.php"); $langs->load("admin"); -$action=GETPOST('action'); -$what=GETPOST("what"); -$export_type=GETPOST("export_type"); -$file=GETPOST('filename_template'); +$action=GETPOST('action','alpha'); +$what=GETPOST('what','alpha'); +$export_type=GETPOST('export_type','alpha'); +$file=GETPOST('filename_template','alpha'); -$sortfield = GETPOST("sortfield"); -$sortorder = GETPOST("sortorder"); -$page = GETPOST("page"); +$sortfield = GETPOST('sortfield','alpha'); +$sortorder = GETPOST('sortorder','alpha'); +$page = GETPOST('page','int'); if (! $sortorder) $sortorder="DESC"; if (! $sortfield) $sortfield="date"; if ($page < 0) { $page = 0; } From 8c3158cf28a6711d61fd8b3dacccc6ad746be8d0 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Mon, 9 Apr 2012 22:49:19 +0200 Subject: [PATCH 08/22] Fix: sql injection --- htdocs/admin/tools/export.php | 2 +- htdocs/core/lib/functions.lib.php | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/htdocs/admin/tools/export.php b/htdocs/admin/tools/export.php index 1b65caf280f..c471e60423e 100644 --- a/htdocs/admin/tools/export.php +++ b/htdocs/admin/tools/export.php @@ -127,7 +127,7 @@ if ($what == 'mysql') if (! empty($dolibarr_main_db_port)) $param.=" -P ".$dolibarr_main_db_port; if (! GETPOST("use_transaction")) $param.=" -l --single-transaction"; if (GETPOST("disable_fk")) $param.=" -K"; - if (GETPOST("sql_compat") && GETPOST("sql_compat") != 'NONE') $param.=" --compatible=".GETPOST("sql_compat","alpha"); + if (GETPOST("sql_compat") && GETPOST("sql_compat") != 'NONE') $param.=" --compatible=".GETPOST("sql_compat","special"); if (GETPOST("drop_database")) $param.=" --add-drop-database"; if (GETPOST("sql_structure")) { diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 93710e6602d..b5832858353 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -194,6 +194,12 @@ function GETPOST($paramname,$check='',$method=0) // '../' is dangerous because it allows dir transversals if (preg_match('/"/',$out)) $out=''; else if (preg_match('/\.\.\//',$out)) $out=''; + else if (preg_match('/(\s)*|(%20)*/',$out)) $out=''; + } + elseif ($check == 'special') + { + $out=trim($out); + if (preg_match('/(\s)*|(%20)*/',$out)) $out=''; } elseif ($check == 'array') { From ef0e6956b358a825f8fa3071ac7599ac322e562e Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Mon, 9 Apr 2012 22:52:13 +0200 Subject: [PATCH 09/22] Fix: add special test --- htdocs/core/lib/functions.lib.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index b5832858353..c6647017a6a 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -194,7 +194,6 @@ function GETPOST($paramname,$check='',$method=0) // '../' is dangerous because it allows dir transversals if (preg_match('/"/',$out)) $out=''; else if (preg_match('/\.\.\//',$out)) $out=''; - else if (preg_match('/(\s)*|(%20)*/',$out)) $out=''; } elseif ($check == 'special') { From 212b3bd60ea12b43adcc105a0a791bb9480fd292 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 Apr 2012 01:03:43 +0200 Subject: [PATCH 10/22] Revert "Fix: add special test" This reverts commit ef0e6956b358a825f8fa3071ac7599ac322e562e. --- htdocs/core/lib/functions.lib.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index c6647017a6a..b5832858353 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -194,6 +194,7 @@ function GETPOST($paramname,$check='',$method=0) // '../' is dangerous because it allows dir transversals if (preg_match('/"/',$out)) $out=''; else if (preg_match('/\.\.\//',$out)) $out=''; + else if (preg_match('/(\s)*|(%20)*/',$out)) $out=''; } elseif ($check == 'special') { From 4cb6ec76ee0887c5c6c788f09dac1581acdc14a8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 Apr 2012 01:03:54 +0200 Subject: [PATCH 11/22] Revert "Fix: sql injection" This reverts commit 8c3158cf28a6711d61fd8b3dacccc6ad746be8d0. --- htdocs/admin/tools/export.php | 2 +- htdocs/core/lib/functions.lib.php | 6 ------ 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/htdocs/admin/tools/export.php b/htdocs/admin/tools/export.php index c471e60423e..1b65caf280f 100644 --- a/htdocs/admin/tools/export.php +++ b/htdocs/admin/tools/export.php @@ -127,7 +127,7 @@ if ($what == 'mysql') if (! empty($dolibarr_main_db_port)) $param.=" -P ".$dolibarr_main_db_port; if (! GETPOST("use_transaction")) $param.=" -l --single-transaction"; if (GETPOST("disable_fk")) $param.=" -K"; - if (GETPOST("sql_compat") && GETPOST("sql_compat") != 'NONE') $param.=" --compatible=".GETPOST("sql_compat","special"); + if (GETPOST("sql_compat") && GETPOST("sql_compat") != 'NONE') $param.=" --compatible=".GETPOST("sql_compat","alpha"); if (GETPOST("drop_database")) $param.=" --add-drop-database"; if (GETPOST("sql_structure")) { diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index b5832858353..93710e6602d 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -194,12 +194,6 @@ function GETPOST($paramname,$check='',$method=0) // '../' is dangerous because it allows dir transversals if (preg_match('/"/',$out)) $out=''; else if (preg_match('/\.\.\//',$out)) $out=''; - else if (preg_match('/(\s)*|(%20)*/',$out)) $out=''; - } - elseif ($check == 'special') - { - $out=trim($out); - if (preg_match('/(\s)*|(%20)*/',$out)) $out=''; } elseif ($check == 'array') { From 1571134f7dce273488600dab742a9972f929bb93 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 Apr 2012 01:04:18 +0200 Subject: [PATCH 12/22] Revert "Fix: security" This reverts commit 380a8109e89b72be765013a505acf10a4a5e1759. --- htdocs/admin/tools/export.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/htdocs/admin/tools/export.php b/htdocs/admin/tools/export.php index 1b65caf280f..644af28bbf6 100644 --- a/htdocs/admin/tools/export.php +++ b/htdocs/admin/tools/export.php @@ -28,14 +28,14 @@ require_once(DOL_DOCUMENT_ROOT."/core/class/html.formfile.class.php"); $langs->load("admin"); -$action=GETPOST('action','alpha'); -$what=GETPOST('what','alpha'); -$export_type=GETPOST('export_type','alpha'); -$file=GETPOST('filename_template','alpha'); +$action=GETPOST('action'); +$what=GETPOST("what"); +$export_type=GETPOST("export_type"); +$file=GETPOST('filename_template'); -$sortfield = GETPOST('sortfield','alpha'); -$sortorder = GETPOST('sortorder','alpha'); -$page = GETPOST('page','int'); +$sortfield = GETPOST("sortfield"); +$sortorder = GETPOST("sortorder"); +$page = GETPOST("page"); if (! $sortorder) $sortorder="DESC"; if (! $sortfield) $sortfield="date"; if ($page < 0) { $page = 0; } From 37ce5d9fca25ad67a4988f3fd733bd76b631a431 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 Apr 2012 01:25:52 +0200 Subject: [PATCH 13/22] Revert code because it does not fix security hole completely. Also it does work on origin but at a transition level. Sanitizing for command line data must not appears inside a function used for http data. I prefer fixing this at the source and also using a rule that clean all attacks completely instead of a rule that clean "most problem but not all". --- htdocs/admin/tools/export.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/admin/tools/export.php b/htdocs/admin/tools/export.php index 644af28bbf6..9aed78a84ef 100644 --- a/htdocs/admin/tools/export.php +++ b/htdocs/admin/tools/export.php @@ -127,7 +127,7 @@ if ($what == 'mysql') if (! empty($dolibarr_main_db_port)) $param.=" -P ".$dolibarr_main_db_port; if (! GETPOST("use_transaction")) $param.=" -l --single-transaction"; if (GETPOST("disable_fk")) $param.=" -K"; - if (GETPOST("sql_compat") && GETPOST("sql_compat") != 'NONE') $param.=" --compatible=".GETPOST("sql_compat","alpha"); + if (GETPOST("sql_compat") && GETPOST("sql_compat") != 'NONE') $param.=" --compatible=".preg_replace('/[^a-zA-Z0-9]/','',GETPOST("sql_compat","alpha")); if (GETPOST("drop_database")) $param.=" --add-drop-database"; if (GETPOST("sql_structure")) { From 98f7186d03302ca3a3d9b1fee97928f438f9b74e Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Tue, 10 Apr 2012 08:44:43 +0200 Subject: [PATCH 14/22] Fix: best practice --- htdocs/admin/tools/export.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/htdocs/admin/tools/export.php b/htdocs/admin/tools/export.php index 9aed78a84ef..fe686d85bd1 100644 --- a/htdocs/admin/tools/export.php +++ b/htdocs/admin/tools/export.php @@ -28,13 +28,13 @@ require_once(DOL_DOCUMENT_ROOT."/core/class/html.formfile.class.php"); $langs->load("admin"); -$action=GETPOST('action'); -$what=GETPOST("what"); -$export_type=GETPOST("export_type"); -$file=GETPOST('filename_template'); +$action=GETPOST('action','alpha'); +$what=GETPOST('what','alpha'); +$export_type=GETPOST('export_type','alpha'); +$file=GETPOST('filename_template','alpha'); -$sortfield = GETPOST("sortfield"); -$sortorder = GETPOST("sortorder"); +$sortfield = GETPOST('sortfield','alpha'); +$sortorder = GETPOST('sortorder','alpha'); $page = GETPOST("page"); if (! $sortorder) $sortorder="DESC"; if (! $sortfield) $sortfield="date"; @@ -127,7 +127,7 @@ if ($what == 'mysql') if (! empty($dolibarr_main_db_port)) $param.=" -P ".$dolibarr_main_db_port; if (! GETPOST("use_transaction")) $param.=" -l --single-transaction"; if (GETPOST("disable_fk")) $param.=" -K"; - if (GETPOST("sql_compat") && GETPOST("sql_compat") != 'NONE') $param.=" --compatible=".preg_replace('/[^a-zA-Z0-9]/','',GETPOST("sql_compat","alpha")); + if (GETPOST("sql_compat") && GETPOST("sql_compat") != 'NONE') $param.=" --compatible=".escapeshellarg(GETPOST("sql_compat","alpha")); if (GETPOST("drop_database")) $param.=" --add-drop-database"; if (GETPOST("sql_structure")) { From 06761d97539c09feec6f92ed8f6ac6e9ec63a934 Mon Sep 17 00:00:00 2001 From: Grand Philippe Date: Tue, 10 Apr 2012 15:41:27 +0200 Subject: [PATCH 15/22] uniformise code --- htdocs/admin/expedition.php | 167 +++++++++++++++--------------------- 1 file changed, 67 insertions(+), 100 deletions(-) diff --git a/htdocs/admin/expedition.php b/htdocs/admin/expedition.php index 2a6d12bbec0..a8b0325dc5d 100644 --- a/htdocs/admin/expedition.php +++ b/htdocs/admin/expedition.php @@ -40,6 +40,9 @@ if (!$user->admin) accessforbidden(); $action=GETPOST('action','alpha'); $value=GETPOST('value','alpha'); +$label = GETPOST('label','alpha'); +$scandir = GETPOST('scandir','alpha'); +$type='shipping'; if (empty($conf->global->EXPEDITION_ADDON_NUMBER)) { @@ -50,6 +53,59 @@ if (empty($conf->global->EXPEDITION_ADDON_NUMBER)) /* * Actions */ + if ($action == 'updateMask') +{ + $maskconst=GETPOST('maskconstexpedition','alpha'); + $maskvalue=GETPOST('maskexpedition','alpha'); + if ($maskconst) $res = dolibarr_set_const($db,$maskconst,$maskvalue,'chaine',0,'',$conf->entity); + + if (! $res > 0) $error++; + + if (! $error) + { + $mesg = "".$langs->trans("SetupSaved").""; + } + else + { + $mesg = "".$langs->trans("Error").""; + } +} + +if ($action == 'set_SHIPPING_FREE_TEXT') +{ + $freetext=GETPOST('SHIPPING_FREE_TEXT','alpha'); + $res = dolibarr_set_const($db, "SHIPPING_FREE_TEXT",$freetext,'chaine',0,'',$conf->entity); + + if (! $res > 0) $error++; + + if (! $error) + { + $mesg = "".$langs->trans("SetupSaved").""; + } + else + { + $mesg = "".$langs->trans("Error").""; + } +} + +if ($action == 'set_SHIPPING_DRAFT_WATERMARK') +{ + $draft=GETPOST('SHIPPING_DRAFT_WATERMARK','alpha'); + + $res = dolibarr_set_const($db, "SHIPPING_DRAFT_WATERMARK",trim($draft),'chaine',0,'',$conf->entity); + + if (! $res > 0) $error++; + + if (! $error) + { + $mesg = "".$langs->trans("SetupSaved").""; + } + else + { + $mesg = "".$langs->trans("Error").""; + } +} + if ($action == 'specimen') { $modele=GETPOST('module','alpha'); @@ -84,8 +140,8 @@ if ($action == 'specimen') } else { - $mesg=''.$module->error.''; - dol_syslog($module->error, LOG_ERR); + $mesg=''.$obj->error.''; + dol_syslog($obj->error, LOG_ERR); } } else @@ -98,30 +154,13 @@ if ($action == 'specimen') // Activate a model if ($action == 'set') { - $label = GETPOST('label','alpha'); - $scandir = GETPOST('scandir','alpha'); - - $type='shipping'; - $sql = "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity, libelle, description)"; - $sql.= " VALUES ('".$db->escape($value)."','".$type."',".$conf->entity.", "; - $sql.= ($label?"'".$db->escape($label)."'":'null').", "; - $sql.= (! empty($scandir)?"'".$db->escape($scandir)."'":"null"); - $sql.= ")"; - if ($db->query($sql)) - { - - } + $ret = addDocumentModel($value, $type, $label, $scandir); } if ($action == 'del') { - $type='shipping'; - $sql = "DELETE FROM ".MAIN_DB_PREFIX."document_model"; - $sql.= " WHERE nom = '".$db->escape($value)."'"; - $sql.= " AND type = '".$type."'"; - $sql.= " AND entity = ".$conf->entity; - - if ($db->query($sql)) + $ret = delDocumentModel($value, $type); + if ($ret > 0) { if ($conf->global->EXPEDITION_ADDON_PDF == "$value") dolibarr_del_const($db, 'EXPEDITION_ADDON_PDF',$conf->entity); } @@ -130,37 +169,18 @@ if ($action == 'del') // Set default model if ($action == 'setdoc') { - $label = GETPOST('label','alpha'); - $scandir = GETPOST('scandir','alpha'); - - $db->begin(); - if (dolibarr_set_const($db, "EXPEDITION_ADDON_PDF",$value,'chaine',0,'',$conf->entity)) { + // La constante qui a ete lue en avant du nouveau set + // on passe donc par une variable pour avoir un affichage coherent $conf->global->EXPEDITION_ADDON_PDF = $value; } // On active le modele - $type='shipping'; - $sql_del = "DELETE FROM ".MAIN_DB_PREFIX."document_model"; - $sql_del.= " WHERE nom = '".$db->escape($value)."'"; - $sql_del.= " AND type = '".$type."'"; - $sql_del.= " AND entity = ".$conf->entity; - $result1=$db->query($sql_del); - - $sql = "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity, libelle, description)"; - $sql.= " VALUES ('".$db->escape($value)."', '".$type."', ".$conf->entity.", "; - $sql.= ($label?"'".$db->escape($label)."'":'null').", "; - $sql.= (! empty($scandir)?"'".$db->escape($scandir)."'":"null"); - $sql.= ")"; - $result2=$db->query($sql); - if ($result1 && $result2) + $ret = delDocumentModel($value, $type); + if ($ret > 0) { - $db->commit(); - } - else - { - $db->rollback(); + $ret = addDocumentModel($value, $type, $label, $scandir); } } @@ -240,28 +260,8 @@ if ($action == 'setmod') // TODO Verifier si module numerotation choisi peut etre active // par appel methode canBeActivated - $module=GETPOST('module','alpha'); + dolibarr_set_const($db, "EXPEDITION_ADDON",$value,'chaine',0,'',$conf->entity); - dolibarr_set_const($db, "EXPEDITION_ADDON",$module,'chaine',0,'',$conf->entity); - -} - -if ($action == 'updateMask') -{ - $maskconst=GETPOST('maskconstexpedition','alpha'); - $maskvalue=GETPOST('maskexpedition','alpha'); - if ($maskconst) $res = dolibarr_set_const($db,$maskconst,$maskvalue,'chaine',0,'',$conf->entity); - - if (! $res > 0) $error++; - - if (! $error) - { - $mesg = "".$langs->trans("SetupSaved").""; - } - else - { - $mesg = "".$langs->trans("Error").""; - } } if ($action == 'setmodel') @@ -269,39 +269,6 @@ if ($action == 'setmodel') dolibarr_set_const($db, "EXPEDITION_ADDON_NUMBER",$value,'chaine',0,'',$conf->entity); } -if ($action == 'set_SHIPPING_DRAFT_WATERMARK') -{ - $draft=GETPOST('SHIPPING_DRAFT_WATERMARK','alpha'); - $res = dolibarr_set_const($db, "SHIPPING_DRAFT_WATERMARK",trim($draft),'chaine',0,'',$conf->entity); - - if (! $res > 0) $error++; - - if (! $error) - { - $mesg = "".$langs->trans("SetupSaved").""; - } - else - { - $mesg = "".$langs->trans("Error").""; - } -} - -if ($action == 'set_SHIPPING_FREE_TEXT') -{ - $free=GETPOST('SHIPPING_FREE_TEXT','alpha'); - $res = dolibarr_set_const($db, "SHIPPING_FREE_TEXT",$free,'chaine',0,'',$conf->entity); - if (! $res > 0) $error++; - - if (! $error) - { - $mesg = "".$langs->trans("SetupSaved").""; - } - else - { - $mesg = "".$langs->trans("Error").""; - } -} - /* * View From 6ef98b3d461e04eb2ea4ef57c21b257d3b39bcbc Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Wed, 11 Apr 2012 08:11:27 +0200 Subject: [PATCH 16/22] Fix: restore dolibarr version for this branch --- ChangeLog | 4 ---- build/doxygen/dolibarr-doxygen.doxyfile | 2 +- build/exe/doliwamp/doliwamp.iss | 4 ++-- build/makepack-dolibarr.pl | 4 ++-- build/perl/virtualmin/dolibarr.pl | 2 +- build/rpm/dolibarr_fedora.spec | 2 +- build/rpm/dolibarr_generic.spec | 2 +- build/rpm/dolibarr_mandriva.spec | 2 +- build/rpm/dolibarr_opensuse.spec | 2 +- htdocs/filefunc.inc.php | 2 +- htdocs/install/inc.php | 2 +- htdocs/support/inc.php | 2 +- 12 files changed, 13 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index 644be54c311..8f70155e56f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,10 +2,6 @@ English Dolibarr ChangeLog -------------------------------------------------------------- -***** ChangeLog for 3.3 compared to 3.2 ***** - - - ***** ChangeLog for 3.2 compared to 3.1 ***** WARNING: PHP lower than 5.x are no more supported. WARNING: Because of a major datastructure change onto supplier prices tables, be aware diff --git a/build/doxygen/dolibarr-doxygen.doxyfile b/build/doxygen/dolibarr-doxygen.doxyfile index 690b5daf1a2..772e3f97a11 100644 --- a/build/doxygen/dolibarr-doxygen.doxyfile +++ b/build/doxygen/dolibarr-doxygen.doxyfile @@ -31,7 +31,7 @@ PROJECT_NAME = dolibarr # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 3.3.0 +PROJECT_NUMBER = 3.2.0 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. diff --git a/build/exe/doliwamp/doliwamp.iss b/build/exe/doliwamp/doliwamp.iss index ba3332f1e2b..d0191e7f785 100644 --- a/build/exe/doliwamp/doliwamp.iss +++ b/build/exe/doliwamp/doliwamp.iss @@ -17,9 +17,9 @@ ; ----- Change this ----- AppName=DoliWamp ; DoliWamp-x.x.x or DoliWamp-x.x.x-dev or DoliWamp-x.x.x-beta -AppVerName=DoliWamp-3.3.0-alpha +AppVerName=DoliWamp-3.2.0-beta ; DoliWamp-x.x x or DoliWamp-x.x.x-dev or DoliWamp-x.x.x-beta -OutputBaseFilename=DoliWamp-3.3.0-alpha +OutputBaseFilename=DoliWamp-3.2.0-beta ; Define full path from wich all relative path are defined ; You must modify this to put here your dolibarr root directory SourceDir=c:\Documents and Settings\ldestail\git\dolibarr diff --git a/build/makepack-dolibarr.pl b/build/makepack-dolibarr.pl index 7fdb6927509..f1d7bed8418 100644 --- a/build/makepack-dolibarr.pl +++ b/build/makepack-dolibarr.pl @@ -9,8 +9,8 @@ use Cwd; $PROJECT="dolibarr"; $MAJOR="3"; -$MINOR="3"; -$BUILD="0-alpha"; # Mettre x pour release, x-dev pour dev, x-beta pour beta, x-rc pour release candidate +$MINOR="2"; +$BUILD="0-beta"; # Mettre x pour release, x-dev pour dev, x-beta pour beta, x-rc pour release candidate $RPMSUBVERSION="auto"; # auto use value found into BUILD @LISTETARGET=("TGZ","ZIP","RPM_GENERIC","RPM_FEDORA","RPM_MANDRIVA","RPM_OPENSUSE","DEB","APS","EXEDOLIWAMP","SNAPSHOT"); # Possible packages diff --git a/build/perl/virtualmin/dolibarr.pl b/build/perl/virtualmin/dolibarr.pl index b6c42c9997a..35de30e9868 100644 --- a/build/perl/virtualmin/dolibarr.pl +++ b/build/perl/virtualmin/dolibarr.pl @@ -30,7 +30,7 @@ return "Regis Houssin"; # script_dolibarr_versions() sub script_dolibarr_versions { -return ( "3.3.0", "3.2.0", "3.1.0", "3.0.1", "2.9.0" ); +return ( "3.2.0", "3.1.0", "3.0.1", "2.9.0" ); } sub script_dolibarr_category diff --git a/build/rpm/dolibarr_fedora.spec b/build/rpm/dolibarr_fedora.spec index 270e8978713..d6de1481eb5 100755 --- a/build/rpm/dolibarr_fedora.spec +++ b/build/rpm/dolibarr_fedora.spec @@ -292,5 +292,5 @@ fi %changelog -* Wed Mar 4 2012 Laurent Destailleur 3.3.0-0.1.a +* Wed Mar 4 2012 Laurent Destailleur 3.2.0-0.1.a - Initial version (#723326) diff --git a/build/rpm/dolibarr_generic.spec b/build/rpm/dolibarr_generic.spec index acb4ffb4a3a..b6fc58ab8bc 100755 --- a/build/rpm/dolibarr_generic.spec +++ b/build/rpm/dolibarr_generic.spec @@ -348,5 +348,5 @@ fi %changelog -* Wed Mar 4 2012 Laurent Destailleur 3.3.0-0.1.a +* Wed Mar 4 2012 Laurent Destailleur 3.2.0-0.1.a - Initial version (#723326) diff --git a/build/rpm/dolibarr_mandriva.spec b/build/rpm/dolibarr_mandriva.spec index 874d21e50e3..32989981daf 100755 --- a/build/rpm/dolibarr_mandriva.spec +++ b/build/rpm/dolibarr_mandriva.spec @@ -281,5 +281,5 @@ fi %changelog -* Wed Mar 4 2012 Laurent Destailleur 3.3.0-0.1.a +* Wed Mar 4 2012 Laurent Destailleur 3.2.0-0.1.a - Initial version (#723326) diff --git a/build/rpm/dolibarr_opensuse.spec b/build/rpm/dolibarr_opensuse.spec index 63b8608ec83..67aaf05d540 100755 --- a/build/rpm/dolibarr_opensuse.spec +++ b/build/rpm/dolibarr_opensuse.spec @@ -286,5 +286,5 @@ fi %changelog -* Wed Mar 4 2012 Laurent Destailleur 3.3.0-0.1.a +* Wed Mar 4 2012 Laurent Destailleur 3.2.0-0.1.a - Initial version (#723326) diff --git a/htdocs/filefunc.inc.php b/htdocs/filefunc.inc.php index b44b363f751..98a340d87fd 100755 --- a/htdocs/filefunc.inc.php +++ b/htdocs/filefunc.inc.php @@ -29,7 +29,7 @@ * \brief File that include conf.php file and commons lib like functions.lib.php */ -if (! defined('DOL_VERSION')) define('DOL_VERSION','3.3.0-alpha'); // Also defined in htdocs/install/inc.php (Ex: x.y.z-alpha, x.y.z) +if (! defined('DOL_VERSION')) define('DOL_VERSION','3.2.0-beta'); // Also defined in htdocs/install/inc.php (Ex: x.y.z-alpha, x.y.z) if (! defined('EURO')) define('EURO',chr(128)); // Define syslog constants diff --git a/htdocs/install/inc.php b/htdocs/install/inc.php index 5e328dd3b37..e3c5232bd8b 100644 --- a/htdocs/install/inc.php +++ b/htdocs/install/inc.php @@ -24,7 +24,7 @@ * \brief File that define environment for support pages */ -define('DOL_VERSION','3.3.0-alpha'); // Also defined in htdocs/master.inc.php (Ex: x.y.z-alpha, x.y.z) +define('DOL_VERSION','3.2.0-beta'); // Also defined in htdocs/master.inc.php (Ex: x.y.z-alpha, x.y.z) // Define DOL_DOCUMENT_ROOT an ADODB_PATH used for install/upgrade process if (! defined('DOL_DOCUMENT_ROOT')) define('DOL_DOCUMENT_ROOT', '..'); diff --git a/htdocs/support/inc.php b/htdocs/support/inc.php index e2d3935a23c..222f5a807e2 100644 --- a/htdocs/support/inc.php +++ b/htdocs/support/inc.php @@ -24,7 +24,7 @@ * \brief File that define environment for support pages */ -define('DOL_VERSION','3.3.0-alpha'); // Also defined in htdocs/master.inc.php +define('DOL_VERSION','3.2.0-beta'); // Also defined in htdocs/master.inc.php // Define DOL_DOCUMENT_ROOT an ADODB_PATH used for install/upgrade process if (! defined('DOL_DOCUMENT_ROOT')) define('DOL_DOCUMENT_ROOT', '..'); From 8a20b670e7676d9dd386319165ea2ec1c78bda77 Mon Sep 17 00:00:00 2001 From: Grand Philippe Date: Tue, 10 Apr 2012 17:21:28 +0200 Subject: [PATCH 17/22] to add delivery date --- .../class/fournisseur.commande.class.php | 38 +++- htdocs/fourn/commande/fiche.php | 215 ++++++++++-------- .../install/mysql/migration/3.1.0-3.2.0.sql | 2 + .../mysql/tables/llx_commande_fournisseur.sql | 5 +- 4 files changed, 168 insertions(+), 92 deletions(-) diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 96525557ced..d0790550aa7 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -54,6 +54,7 @@ class CommandeFournisseur extends Commande var $fourn_id; var $date; var $date_commande; + var $date_livraison; // Date livraison souhaitee var $total_ht; var $total_tva; var $total_localtax1; // Total Local tax 1 @@ -1367,6 +1368,41 @@ class CommandeFournisseur extends Commande return $result ; } + /** + * Set the planned delivery date + * + * @param User $user Objet utilisateur qui modifie + * @param timestamp $date_livraison Date de livraison + * @return int <0 si ko, >0 si ok + */ + function set_date_livraison($user, $date_livraison) + { + if ($user->rights->fournisseur->commande->creer) + { + $sql = "UPDATE ".MAIN_DB_PREFIX."commande_fournisseur"; + $sql.= " SET date_livraison = ".($date_livraison ? "'".$this->db->idate($date_livraison)."'" : 'null'); + $sql.= " WHERE rowid = ".$this->id; + + dol_syslog("CommandeFournisseur::set_date_livraison sql=".$sql,LOG_DEBUG); + $resql=$this->db->query($sql); + if ($resql) + { + $this->date_livraison = $date_livraison; + return 1; + } + else + { + $this->error=$this->db->error(); + dol_syslog("CommandeFournisseur::set_date_livraison ".$this->error,LOG_ERR); + return -1; + } + } + else + { + return -2; + } + } + /** * Update a supplier order from a customer order * @@ -1830,4 +1866,4 @@ class CommandeFournisseurLigne extends OrderLine } } -?> +?> \ No newline at end of file diff --git a/htdocs/fourn/commande/fiche.php b/htdocs/fourn/commande/fiche.php index 21f93a08fcc..caf83271bbd 100644 --- a/htdocs/fourn/commande/fiche.php +++ b/htdocs/fourn/commande/fiche.php @@ -48,12 +48,12 @@ $langs->load('products'); $langs->load('stocks'); $id = GETPOST('id','int'); -$ref = GETPOST("ref"); -$action = GETPOST("action"); -$confirm = GETPOST("confirm"); -$comclientid = GETPOST("comid"); +$ref = GETPOST('ref','alpha'); +$action = GETPOST('action','alpha'); +$confirm = GETPOST('confirm','alpha'); +$comclientid = GETPOST('comid','int'); $socid = GETPOST('socid','int'); -$projectid = GETPOST("projectid"); +$projectid = GETPOST('projectid','int'); // Security check if ($user->societe_id) $socid=$user->societe_id; @@ -87,6 +87,19 @@ else if ($action == 'setmode' && $user->rights->fournisseur->commande->creer) $result = $object->setPaymentMethods(GETPOST('mode_reglement_id','int')); } +// date de livraison +if ($action == 'setdate_livraison' && $user->rights->fournisseur->commande->creer) +{ + $datelivraison=dol_mktime(0, 0, 0, GETPOST('liv_month','int'), GETPOST('liv_day','int'),GETPOST('liv_year','int')); + + $object->fetch($id); + $result=$object->set_date_livraison($user,$datelivraison); + if ($result < 0) + { + $mesg='
'.$object->error.'
'; + } +} + // Set project else if ($action == 'classin' && $user->rights->fournisseur->commande->creer) { @@ -100,18 +113,18 @@ else if ($action == 'setremisepercent' && $user->rights->fournisseur->commande-> $result = $object->set_remise($user, $_POST['remise_percent']); } -else if ($action == 'setnote_public' && $user->rights->propale->creer) -{ - $object->fetch($id); - $result=$object->update_note_public(dol_html_entity_decode(GETPOST('note_public'), ENT_QUOTES)); - if ($result < 0) dol_print_error($db,$object->error); -} - -else if ($action == 'setnote' && $user->rights->propale->creer) -{ - $object->fetch($id); - $result=$object->update_note(dol_html_entity_decode(GETPOST('note'), ENT_QUOTES)); - if ($result < 0) dol_print_error($db,$object->error); +else if ($action == 'setnote_public' && $user->rights->propale->creer) +{ + $object->fetch($id); + $result=$object->update_note_public(dol_html_entity_decode(GETPOST('note_public'), ENT_QUOTES)); + if ($result < 0) dol_print_error($db,$object->error); +} + +else if ($action == 'setnote' && $user->rights->propale->creer) +{ + $object->fetch($id); + $result=$object->update_note(dol_html_entity_decode(GETPOST('note'), ENT_QUOTES)); + if ($result < 0) dol_print_error($db,$object->error); } else if ($action == 'reopen' && $user->rights->fournisseur->commande->approuver) @@ -812,64 +825,64 @@ if ($action == 'send' && ! $_POST['addfile'] && ! $_POST['removedfile'] && ! $_P } } -if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB)) +if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB)) { - if ($action == 'addcontact' && $user->rights->fournisseur->commande->creer) - { - $result = $object->fetch($id); - - if ($result > 0 && $id > 0) + if ($action == 'addcontact' && $user->rights->fournisseur->commande->creer) + { + $result = $object->fetch($id); + + if ($result > 0 && $id > 0) { - $contactid = (GETPOST('userid') ? GETPOST('userid') : GETPOST('contactid')); - $result = $result = $object->add_contact($contactid, $_POST["type"], $_POST["source"]); - } - - if ($result >= 0) - { - Header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); - exit; - } - else - { - if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') - { - $langs->load("errors"); - $mesg = '
'.$langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType").'
'; - } - else - { - $mesg = '
'.$object->error.'
'; - } - } - } - - // bascule du statut d'un contact - else if ($action == 'swapstatut' && $user->rights->fournisseur->commande->creer) - { - if ($object->fetch($id)) - { - $result=$object->swapContactStatus(GETPOST('ligne')); - } - else - { - dol_print_error($db); - } - } - - // Efface un contact - else if ($action == 'deletecontact' && $user->rights->fournisseur->commande->creer) - { - $object->fetch($id); - $result = $object->delete_contact($_GET["lineid"]); - - if ($result >= 0) - { - Header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); - exit; - } - else { - dol_print_error($db); - } + $contactid = (GETPOST('userid') ? GETPOST('userid') : GETPOST('contactid')); + $result = $result = $object->add_contact($contactid, $_POST["type"], $_POST["source"]); + } + + if ($result >= 0) + { + Header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); + exit; + } + else + { + if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') + { + $langs->load("errors"); + $mesg = '
'.$langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType").'
'; + } + else + { + $mesg = '
'.$object->error.'
'; + } + } + } + + // bascule du statut d'un contact + else if ($action == 'swapstatut' && $user->rights->fournisseur->commande->creer) + { + if ($object->fetch($id)) + { + $result=$object->swapContactStatus(GETPOST('ligne')); + } + else + { + dol_print_error($db); + } + } + + // Efface un contact + else if ($action == 'deletecontact' && $user->rights->fournisseur->commande->creer) + { + $object->fetch($id); + $result = $object->delete_contact($_GET["lineid"]); + + if ($result >= 0) + { + Header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); + exit; + } + else { + dol_print_error($db); + } } } @@ -1102,6 +1115,30 @@ if ($id > 0 || ! empty($ref)) } print '
'; + // Delivery date planed + print ''; + // Project if ($conf->projet->enabled) { @@ -1155,22 +1192,22 @@ if ($id > 0 || ! empty($ref)) print "
 '; if ($decaiss_ttc[$case] != 0) { - print ''.price($decaiss_ttc[$case],'MT').''; + print ''.price(price2num($decaiss_ttc[$case],'MT')).''; $totsorties[$annee]+=$decaiss_ttc[$case]; } print " '; if ($encaiss_ttc[$case] != 0) { - print ''.price($encaiss_ttc[$case],'MT').''; + print ''.price(price2num($encaiss_ttc[$case],'MT')).''; $totentrees[$annee]+=$encaiss_ttc[$case]; } print "
'.$langs->trans("TotalTTC").''.(isset($totsorties[$annee])?price($totsorties[$annee],'MT'):' ').''.(isset($totentrees[$annee])?price($totentrees[$annee],'MT'):' ').''.(isset($totsorties[$annee])?price(price2num($totsorties[$annee],'MT')):' ').''.(isset($totentrees[$annee])?price(price2num($totentrees[$annee],'MT')):' ').'
'; if (isset($totentrees[$annee]) || isset($totsorties[$annee])) { - print price($totentrees[$annee]-$totsorties[$annee],'MT').' 
'; + print ''; + + if ($action != 'editdate_livraison') print ''; + print '
'; + print $langs->trans('DateDeliveryPlanned'); + print 'id.'">'.img_edit($langs->trans('SetDeliveryDate'),1).'
'; + print '
'; + if ($action == 'editdate_livraison') + { + print ''; + print ''; + print ''; + $form->select_date($object->date_livraison?$object->date_livraison:-1,'liv_','','','',"setdate_livraison"); + print ''; + print ''; + } + else + { + print $object->date_livraison ? dol_print_date($object->date_livraison,'daytext') : ' '; + } + print '

"; - if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB)) - { + if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB)) + { require_once(DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'); - require_once(DOL_DOCUMENT_ROOT."/contact/class/contact.class.php"); - $formcompany= new FormCompany($db); - - $blocname = 'contacts'; - $title = $langs->trans('ContactsAddresses'); - include(DOL_DOCUMENT_ROOT.'/core/tpl/bloc_showhide.tpl.php'); - } - - if (! empty($conf->global->MAIN_DISABLE_NOTES_TAB)) - { - $blocname = 'notes'; - $title = $langs->trans('Notes'); - include(DOL_DOCUMENT_ROOT.'/core/tpl/bloc_showhide.tpl.php'); + require_once(DOL_DOCUMENT_ROOT."/contact/class/contact.class.php"); + $formcompany= new FormCompany($db); + + $blocname = 'contacts'; + $title = $langs->trans('ContactsAddresses'); + include(DOL_DOCUMENT_ROOT.'/core/tpl/bloc_showhide.tpl.php'); + } + + if (! empty($conf->global->MAIN_DISABLE_NOTES_TAB)) + { + $blocname = 'notes'; + $title = $langs->trans('Notes'); + include(DOL_DOCUMENT_ROOT.'/core/tpl/bloc_showhide.tpl.php'); } dol_htmloutput_mesg($mesg); @@ -1722,4 +1759,4 @@ if ($id > 0 || ! empty($ref)) // End of page llxFooter(); $db->close(); -?> +?> \ No newline at end of file diff --git a/htdocs/install/mysql/migration/3.1.0-3.2.0.sql b/htdocs/install/mysql/migration/3.1.0-3.2.0.sql index b5ccfefeb4a..b3ef221cf1a 100755 --- a/htdocs/install/mysql/migration/3.1.0-3.2.0.sql +++ b/htdocs/install/mysql/migration/3.1.0-3.2.0.sql @@ -451,3 +451,5 @@ ALTER TABLE llx_commande_fournisseur ADD COLUMN extraparams varchar(255) AFTER i ALTER TABLE llx_facture_fourn ADD COLUMN extraparams varchar(255) AFTER import_key; ALTER TABLE llx_boxes ADD COLUMN maxline integer NULL; + +ALTER TABLE llx_commande_fournisseur ADD COLUMN date_livraison date NULL; \ No newline at end of file diff --git a/htdocs/install/mysql/tables/llx_commande_fournisseur.sql b/htdocs/install/mysql/tables/llx_commande_fournisseur.sql index 1c1a00dbbe0..9cfca75f307 100644 --- a/htdocs/install/mysql/tables/llx_commande_fournisseur.sql +++ b/htdocs/install/mysql/tables/llx_commande_fournisseur.sql @@ -53,11 +53,12 @@ create table llx_commande_fournisseur note text, note_public text, model_pdf varchar(255), - + + date_livraison date default NULL, fk_cond_reglement integer, -- condition de reglement fk_mode_reglement integer, -- mode de reglement fk_methode_commande integer default 0, -- should be named fk_input_method import_key varchar(14), extraparams varchar(255) -- for stock other parameters with json format -)ENGINE=innodb; +)ENGINE=innodb; \ No newline at end of file From b948ee1212eadc1d0e39deb1dc1fe03a955230c9 Mon Sep 17 00:00:00 2001 From: Grand Philippe Date: Tue, 10 Apr 2012 19:43:44 +0200 Subject: [PATCH 18/22] to add delivery date --- htdocs/fourn/class/fournisseur.commande.class.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index d0790550aa7..e186337fcc0 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -113,7 +113,7 @@ class CommandeFournisseur extends Commande $sql = "SELECT c.rowid, c.ref, c.date_creation, c.fk_soc, c.fk_user_author, c.fk_statut, c.amount_ht, c.total_ht, c.total_ttc, c.tva,"; $sql.= " c.localtax1, c.localtax2, "; - $sql.= " c.date_commande as date_commande, c.fk_cond_reglement, c.fk_mode_reglement, c.fk_projet as fk_project, c.remise_percent, c.source, c.fk_methode_commande,"; + $sql.= " c.date_commande as date_commande, c.date_livraison as date_livraison, c.fk_cond_reglement, c.fk_mode_reglement, c.fk_projet as fk_project, c.remise_percent, c.source, c.fk_methode_commande,"; $sql.= " c.note as note_private, c.note_public, c.model_pdf, c.extraparams,"; $sql.= " cm.libelle as methode_commande,"; $sql.= " cr.code as cond_reglement_code, cr.libelle as cond_reglement_libelle,"; @@ -151,6 +151,7 @@ class CommandeFournisseur extends Commande $this->total_ttc = $obj->total_ttc; $this->date_commande = $this->db->jdate($obj->date_commande); // date a laquelle la commande a ete transmise $this->date = $this->db->jdate($obj->date_creation); + $this->date_livraison = $this->db->jdate($obj->date_livraison); $this->remise_percent = $obj->remise_percent; $this->methode_commande_id = $obj->fk_methode_commande; $this->methode_commande = $obj->methode_commande; @@ -889,6 +890,7 @@ class CommandeFournisseur extends Commande $sql.= ", entity"; $sql.= ", fk_soc"; $sql.= ", date_creation"; + $sql.= ", date_livraison"; $sql.= ", fk_user_author"; $sql.= ", fk_statut"; $sql.= ", source"; @@ -900,6 +902,7 @@ class CommandeFournisseur extends Commande $sql.= ", ".$conf->entity; $sql.= ", ".$this->socid; $sql.= ", ".$this->db->idate($now); + $sql.= ", ".$this->db->idate($now); $sql.= ", ".$user->id; $sql.= ", 0"; $sql.= ", 0"; From 2a12b2464437a87d2b4fdb6fb1de4ca92ce39480 Mon Sep 17 00:00:00 2001 From: FHenry Date: Tue, 10 Apr 2012 14:32:54 +0200 Subject: [PATCH 19/22] Add __MAILTOEMAIL__ and configutation gobal varialbe of Check Read and unsubscribe in Admin part --- htdocs/admin/mailing.php | 22 ++++++++++++++++++++++ htdocs/comm/mailing/fiche.php | 6 +++++- htdocs/langs/en_US/mails.lang | 2 ++ htdocs/langs/fr_FR/mails.lang | 2 ++ scripts/emailings/mailing-send.php | 3 ++- 5 files changed, 33 insertions(+), 2 deletions(-) diff --git a/htdocs/admin/mailing.php b/htdocs/admin/mailing.php index bad34ac83b2..8808849b7ca 100644 --- a/htdocs/admin/mailing.php +++ b/htdocs/admin/mailing.php @@ -44,11 +44,14 @@ if ($action == 'setvalue' && $user->admin) $mailfrom = GETPOST('MAILING_EMAIL_FROM','alpha'); $mailerror = GETPOST('MAILING_EMAIL_ERRORSTO','alpha'); + $checkread = GETPOST('value','alpha'); $res=dolibarr_set_const($db, "MAILING_EMAIL_FROM",$mailfrom,'chaine',0,'',$conf->entity); if (! $res > 0) $error++; $res=dolibarr_set_const($db, "MAILING_EMAIL_ERRORSTO",$mailerror,'chaine',0,'',$conf->entity); if (! $res > 0) $error++; + $res=dolibarr_set_const($db, "MAIN_SOCIETE_UNSUBSCRIBE",$checkread,'chaine',0,'',$conf->entity); + if (! $res > 0) $error++; if (! $error) { @@ -101,6 +104,25 @@ print ''; +$var=!$var; +print ''; +print $langs->trans("ActivateCheckRead").''; +if ($conf->global->MAIN_SOCIETE_UNSUBSCRIBE==1) +{ + print ''; + print img_picto($langs->trans("Enabled"),'switch_on'); + print ''; +} +else +{ + print ''; + print img_picto($langs->trans("Disabled"),'switch_off'); + print ''; +} +print ''; + + + print ''; print ''; diff --git a/htdocs/comm/mailing/fiche.php b/htdocs/comm/mailing/fiche.php index 5f02441159c..bf74bf0ad08 100644 --- a/htdocs/comm/mailing/fiche.php +++ b/htdocs/comm/mailing/fiche.php @@ -49,6 +49,7 @@ $substitutionarray=array( '__EMAIL__' => 'EMail', '__LASTNAME__' => 'Lastname', '__FIRSTNAME__' => 'Firstname', + '__MAILTOEMAIL__' => 'MailtoEmail', '__OTHER1__' => 'Other1', '__OTHER2__' => 'Other2', '__OTHER3__' => 'Other3', @@ -73,6 +74,7 @@ $substitutionarrayfortest=array( '__EMAIL__' => 'TESTEMail', '__LASTNAME__' => 'TESTLastname', '__FIRSTNAME__' => 'TESTFirstname', + '__MAILTOEMAIL__' => 'TESTMailtoEmail', '__OTHER1__' => 'TESTOther1', '__OTHER2__' => 'TESTOther2', '__OTHER3__' => 'TESTOther3', @@ -208,8 +210,9 @@ if ($action == 'sendallconfirmed' && $confirm == 'yes') $substitutionarray=array( '__ID__' => $obj->source_id, '__EMAIL__' => $obj->email, - '__CHECK_READ__' => '', + '__CHECK_READ__' => '', '__UNSUSCRIBE__' => ''.$langs->trans("MailUnsubcribe").'', + '__MAILTOEMAIL__' => ''.$obj->email.'', '__LASTNAME__' => $obj->nom, '__FIRSTNAME__' => $obj->prenom, '__OTHER1__' => $other1, @@ -1048,6 +1051,7 @@ else print '__CHECK_READ__ = '.$langs->trans("CheckRead").'
'; print '__UNSUSCRIBE__ = '.$langs->trans("MailUnsubcribe").'
'; } + print '__MAILTOEMAIL__ = '.$langs->trans("MailtoEMail").'
'; print '__LASTNAME__ = '.$langs->trans("Lastname").'
'; print '__FIRSTNAME__ = '.$langs->trans("Firstname").'
'; print '__OTHER1__ = '.$langs->trans("Other").'1
'; diff --git a/htdocs/langs/en_US/mails.lang b/htdocs/langs/en_US/mails.lang index 9ada97fc97b..d5deed6ec64 100644 --- a/htdocs/langs/en_US/mails.lang +++ b/htdocs/langs/en_US/mails.lang @@ -75,6 +75,8 @@ SentTo=Sent to %s MailingStatusRead=Read CheckRead=Read Receipt YourMailUnsubcribeOK=The email %s is correctly unsubcribe from mailing list +MailtoEMail=Hyper link to email +ActivateCheckRead=Activate Read receipt and unsubcribe tag # Libelle des modules de liste de destinataires mailing MailingModuleDescContactCompanies=Contacts of all third parties (customer, prospect, supplier, ...) diff --git a/htdocs/langs/fr_FR/mails.lang b/htdocs/langs/fr_FR/mails.lang index c80a79615aa..9e1b08b84d1 100644 --- a/htdocs/langs/fr_FR/mails.lang +++ b/htdocs/langs/fr_FR/mails.lang @@ -75,6 +75,8 @@ SentTo=Envoyés à %s MailingStatusRead=Lu CheckRead=Accusé de lecture YourMailUnsubcribeOK=L'adresse e-mail %s est bien désincrite de la liste. +MailtoEMail=Ecrire a e-mail (lien) +ActivateCheckRead=Activer les tag d'accusé de lecture et de désincription # Libelle des modules de liste de destinataires mailing MailingModuleDescContactCompanies=Contacts de tiers (prospects, clients, fournisseurs...) diff --git a/scripts/emailings/mailing-send.php b/scripts/emailings/mailing-send.php index 3ccca19e5e8..98b4439ad5c 100644 --- a/scripts/emailings/mailing-send.php +++ b/scripts/emailings/mailing-send.php @@ -139,8 +139,9 @@ if ($resql) $substitutionarray=array( '__ID__' => $obj->source_id, '__EMAIL__' => $obj->email, - '__CHECK_READ__' => '', + '__CHECK_READ__' => '', '__UNSUSCRIBE__' => ''.$langs->trans("MailUnsubcribe").'', + '__MAILTOEMAIL__' => ''.$obj->email.'', '__LASTNAME__' => $obj->lastname, '__FIRSTNAME__' => $obj->firstname, '__OTHER1__' => $other1, From 45e34aba65e6105ceb5dd878782e1e25c06aac3c Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Tue, 10 Apr 2012 12:04:14 +0200 Subject: [PATCH 20/22] Fix: missing company logo and invert from to ! --- .../pdf/pdf_muscadet.modules.php | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php b/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php index d94c5129335..ff5b81a5dd5 100644 --- a/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php +++ b/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php @@ -902,7 +902,6 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $pdf->SetXY($this->marge_gauche,$posy); // Logo - /* $logo=$conf->mycompany->dir_output.'/logos/'.$mysoc->logo; if ($mysoc->logo) { @@ -920,10 +919,10 @@ class pdf_muscadet extends ModelePDFSuppliersOrders } } else - {*/ + { $text=$this->emetteur->name; $pdf->MultiCell(100, 4, $outputlangs->convToOutputCharset($text), 0, 'L'); - //} + } $pdf->SetFont('', 'B', $default_font_size + 3); $pdf->SetXY($posx,$posy); @@ -959,7 +958,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders if ($showaddress) { // Sender properties - $carac_emetteur = pdf_build_address($outputlangs,$this->emetteur); + $carac_emetteur = pdf_build_address($outputlangs,$mysoc); // Show sender $posy=42; @@ -980,10 +979,10 @@ class pdf_muscadet extends ModelePDFSuppliersOrders // Show sender name $pdf->SetXY($posx+2,$posy+3); $pdf->SetFont('','B', $default_font_size); - $pdf->MultiCell(80, 4, $outputlangs->convToOutputCharset($this->emetteur->name), 0, 'L'); + $pdf->MultiCell(80, 4, $outputlangs->convToOutputCharset($mysoc->name), 0, 'L'); // Show sender information - $pdf->SetXY($posx+2,$posy+4+(dol_nboflines_bis($this->emetteur->name,44)*4)); + $pdf->SetXY($posx+2,$posy+4+(dol_nboflines_bis($mysoc->name,44)*4)); $pdf->SetFont('','', $default_font_size - 1); $pdf->MultiCell(80, 4, $carac_emetteur, 0, 'L'); @@ -991,7 +990,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders // If BILLING contact defined on order, we use it $usecontact=false; - $arrayidcontact=$object->getIdContact('internal','BILLING'); + $arrayidcontact=$object->getIdContact('external','BILLING'); if (count($arrayidcontact) > 0) { $usecontact=true; @@ -1003,15 +1002,15 @@ class pdf_muscadet extends ModelePDFSuppliersOrders { // On peut utiliser le nom de la societe du contact if ($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT) $socname = $object->contact->socname; - else $socname = $mysoc->nom; + else $socname = $this->emetteur->name; $carac_client_name=$outputlangs->convToOutputCharset($socname); } else { - $carac_client_name=$outputlangs->convToOutputCharset($mysoc->nom); + $carac_client_name=$outputlangs->convToOutputCharset($this->emetteur->name); } - - $carac_client=pdf_build_address($outputlangs,$this->emetteur,$mysoc,$object->contact,$usecontact,'target'); + + $carac_client=pdf_build_address($outputlangs,$this->emetteur,$object->client,$object->contact,$usecontact,'target'); // Show recipient $posy=42; From d7e579e2345a0a9af75b26cd1daaccda8e41fc8f Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Tue, 10 Apr 2012 12:34:02 +0200 Subject: [PATCH 21/22] Fix: invert emetteur and problem with long phone number --- htdocs/core/lib/pdf.lib.php | 2 +- .../supplier_order/pdf/pdf_muscadet.modules.php | 17 ++++++++--------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index eac6ff70dc8..80018d53d5b 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -221,7 +221,7 @@ function pdf_build_address($outputlangs,$sourcecompany,$targetcompany='',$target // Tel if ($sourcecompany->tel) $stringaddress .= ($stringaddress ? "\n" : '' ).$outputlangs->transnoentities("Phone").": ".$outputlangs->convToOutputCharset($sourcecompany->tel); // Fax - if ($sourcecompany->fax) $stringaddress .= ($stringaddress ? ($sourcecompany->tel ? " - " : "\n") : '' ).$outputlangs->transnoentities("Fax").": ".$outputlangs->convToOutputCharset($sourcecompany->fax); + if ($sourcecompany->fax) $stringaddress .= ($stringaddress ? "\n" : '' ).$outputlangs->transnoentities("Fax").": ".$outputlangs->convToOutputCharset($sourcecompany->fax); // EMail if ($sourcecompany->email) $stringaddress .= ($stringaddress ? "\n" : '' ).$outputlangs->transnoentities("Email").": ".$outputlangs->convToOutputCharset($sourcecompany->email); // Web diff --git a/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php b/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php index ff5b81a5dd5..a999e435111 100644 --- a/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php +++ b/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php @@ -98,8 +98,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $this->franchise=!$mysoc->tva_assuj; // Get source company - if (! is_object($object->thirdparty)) $object->fetch_thirdparty(); - $this->emetteur=$object->thirdparty; + $this->emetteur=$mysoc; if (! $this->emetteur->country_code) $this->emetteur->country_code=substr($langs->defaultlang,-2); // By default, if was not defined // Defini position des colonnes @@ -902,8 +901,8 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $pdf->SetXY($this->marge_gauche,$posy); // Logo - $logo=$conf->mycompany->dir_output.'/logos/'.$mysoc->logo; - if ($mysoc->logo) + $logo=$conf->mycompany->dir_output.'/logos/'.$this->emetteur->logo; + if ($this->emetteur->logo) { if (is_readable($logo)) { @@ -958,7 +957,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders if ($showaddress) { // Sender properties - $carac_emetteur = pdf_build_address($outputlangs,$mysoc); + $carac_emetteur = pdf_build_address($outputlangs,$this->emetteur); // Show sender $posy=42; @@ -979,10 +978,10 @@ class pdf_muscadet extends ModelePDFSuppliersOrders // Show sender name $pdf->SetXY($posx+2,$posy+3); $pdf->SetFont('','B', $default_font_size); - $pdf->MultiCell(80, 4, $outputlangs->convToOutputCharset($mysoc->name), 0, 'L'); + $pdf->MultiCell(80, 4, $outputlangs->convToOutputCharset($this->emetteur->name), 0, 'L'); // Show sender information - $pdf->SetXY($posx+2,$posy+4+(dol_nboflines_bis($mysoc->name,44)*4)); + $pdf->SetXY($posx+2,$posy+4+(dol_nboflines_bis($this->emetteur->name,44)*4)); $pdf->SetFont('','', $default_font_size - 1); $pdf->MultiCell(80, 4, $carac_emetteur, 0, 'L'); @@ -1002,12 +1001,12 @@ class pdf_muscadet extends ModelePDFSuppliersOrders { // On peut utiliser le nom de la societe du contact if ($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT) $socname = $object->contact->socname; - else $socname = $this->emetteur->name; + else $socname = $object->client->name; $carac_client_name=$outputlangs->convToOutputCharset($socname); } else { - $carac_client_name=$outputlangs->convToOutputCharset($this->emetteur->name); + $carac_client_name=$outputlangs->convToOutputCharset($object->client->name); } $carac_client=pdf_build_address($outputlangs,$this->emetteur,$object->client,$object->contact,$usecontact,'target'); From 307c010b907aff692b1373f3b80220bbb540f4bc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 Apr 2012 12:38:10 +0200 Subject: [PATCH 22/22] Fix: Removed warning --- htdocs/core/class/conf.class.php | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php index 8b220b58800..a2c19812434 100644 --- a/htdocs/core/class/conf.class.php +++ b/htdocs/core/class/conf.class.php @@ -94,7 +94,7 @@ class Conf $this->syslog = (object) array(); $this->browser = (object) array(); $this->multicompany = (object) array(); - + // First level object $this->expedition_bon = (object) array(); $this->livraison_bon = (object) array(); @@ -111,7 +111,7 @@ class Conf $this->bank = (object) array(); $this->notification = (object) array(); $this->mailing = (object) array(); - + //! Charset for HTML output and for storing data in memory $this->file->character_set_client='UTF-8'; // UTF-8, ISO-8859-1 } @@ -207,12 +207,12 @@ class Conf } $i++; } - + $db->free($resql); } //var_dump($this->modules); //var_dump($this->modules_parts); - + // Object $mc if (! defined('NOREQUIREMC') && ! empty($this->multicompany->enabled)) { @@ -220,7 +220,7 @@ class Conf $ret = @dol_include_once('/multicompany/class/actions_multicompany.class.php'); if ($ret) $mc = new ActionsMulticompany($db); } - + // Second or others levels object $this->propal->cloture = (object) array(); $this->propal->facturation = (object) array(); @@ -289,7 +289,7 @@ class Conf // For backward compatibility $this->user->dir_output=$rootforuser."/users"; $this->user->dir_temp=$rootforuser."/users/temp"; - + // For propal storage $this->propal->dir_output=$rootforuser."/propale"; $this->propal->dir_temp=$rootforuser."/propale/temp"; @@ -307,7 +307,7 @@ class Conf $this->fournisseur->commande->dir_temp =$rootfordata."/fournisseur/commande/temp"; $this->fournisseur->facture->dir_output =$rootfordata."/fournisseur/facture"; $this->fournisseur->facture->dir_temp =$rootfordata."/fournisseur/facture/temp"; - + // Module product/service $this->product->multidir_output=array($this->entity => $rootfordata."/produit"); $this->product->multidir_temp =array($this->entity => $rootfordata."/produit/temp"); @@ -318,7 +318,7 @@ class Conf $this->product->dir_temp =$rootfordata."/produit/temp"; $this->service->dir_output=$rootfordata."/produit"; $this->service->dir_temp =$rootfordata."/produit/temp"; - + // Module contrat $this->contrat->dir_output=$rootfordata."/contracts"; $this->contrat->dir_temp =$rootfordata."/contracts/temp"; @@ -414,11 +414,11 @@ class Conf $this->bank->cheque->warning_delay=(isset($this->global->MAIN_DELAY_CHEQUES_TO_DEPOSIT)?$this->global->MAIN_DELAY_CHEQUES_TO_DEPOSIT:0)*24*60*60; // For backward compatibility - $this->produit=$this->product; - $this->invoice=$this->facture; - $this->order=$this->commande; - $this->contract=$this->contrat; - $this->category=$this->categorie; + if (isset($this->product)) $this->produit=$this->product; + if (isset($this->facture)) $this->invoice=$this->facture; + if (isset($this->commande)) $this->order=$this->commande; + if (isset($this->contrat)) $this->contract=$this->contrat; + if (isset($this->categorie)) $this->category=$this->categorie; // Define menu manager in setup @@ -435,7 +435,7 @@ class Conf // For backward compatibility if ($this->top_menu == 'eldy.php') $this->top_menu='eldy_backoffice.php'; elseif ($this->top_menu == 'rodolphe.php') $this->top_menu='eldy_backoffice.php'; - + // Object $mc if (! defined('NOREQUIREMC') && ! empty($this->multicompany->enabled)) {