diff --git a/.travis.yml b/.travis.yml index 26d4c64fef25b..a4f8ecd827075 100644 --- a/.travis.yml +++ b/.travis.yml @@ -56,7 +56,7 @@ before_script: - sh -c "if [ '$DB' = 'pgsql' ]; then psql -c 'CREATE DATABASE myapp_test;' -U postgres; fi" - sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'DROP DATABASE IF EXISTS myapp_test;'; fi" - sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'CREATE DATABASE IF NOT EXISTS myapp_test;'; fi" - - sh -c "if [ '$DB' = 'mysql' ]; then mysql -D myapp_test < $(pwd)/dev/initdata/mysqldump_dolibarr_3.5.0.sql; fi" + - sh -c "if [ '$DB' = 'mysql' ]; then mysql -D myapp_test < $(pwd)/dev/initdata/mysqldump_dolibarr_3.4.0.sql; fi" - echo Create config file htdocs/conf/conf.php - echo ' htdocs/conf/conf.php - sh -c "if [ '$DB' = 'pgsql' ]; then echo '$'dolibarr_main_db_type=\'pgsql\'';' >> htdocs/conf/conf.php; fi" @@ -80,10 +80,18 @@ before_script: - sudo /etc/init.d/apache2 restart - wget http://localhost/ - cat index.html - + script: + - cd htdocs/install + - php upgrade.php 3.4.0 3.5.0 > upgrade.log + - php upgrade2.php 3.4.0 3.5.0 > upgrade2.log + - php upgrade.php 3.5.0 3.6.0 >> upgrade.log + - php upgrade2.php 3.5.0 3.6.0 >> upgrade2.log + - cd ../.. +# - cat upgrade.log +# - cat upgrade2.log # - phpunit -d memory_limit=-1 --configuration test/phpunit/phpunittest.xml --coverage-text test/phpunit/AllTests.php # - phpunit -d memory_limit=-1 --configuration test/phpunit/phpunittest.xml --coverage-text test/phpunit/BuildDocTest.php # - phpunit -d memory_limit=-1 --configuration test/phpunit/phpunittest.xml test/phpunit/WebservicesOtherTest.php diff --git a/ChangeLog b/ChangeLog index 27ce4abbbcf6d..cb6495b4196b5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,11 +9,13 @@ For users: - New: Add option MAIN_HIDE_INACTIVETAB_ON_PRINT to hide inactive tabs when you use the "print" view on screen. - New: Add menu entry to barcode genration page. -- New: Add option MAIN_AUTO_TIMESTAMP_IN_NOTES to automatically add timestamp - and user line into editionf field when editing a note. +- New: Add option MAIN_AUTO_TIMESTAMP_IN_PUBLIC_NOTES and MAIN_AUTO_TIMESTAMP_IN_PRIVATE_NOTES + to automatically add timestamp and user line into editionf field when editing a note. - New: Add button cancel into edition of notes. - New: Improved Opensurvey module and added options to disable comments and disable public votes +- New: The box "balance of bank accounts" show all opened accounts. +- New: Add option MAIN_ADD_SALE_REP_SIGNATURE_IN_NOTE. For translators: - Update language files. @@ -170,6 +172,18 @@ parameter. All methods addline in this case were modified to remove this paramet ***** ChangeLog for 3.4.3 compared to 3.4.2 ***** Fix: Bad get of localtaxes into contracts add lines +***** ChangeLog for 3.4.3 compared to 3.4.2 ***** +Fix: Warning into bank conciliation feature. +Fix: Bad get of localtaxes into contracts add lines. +Fix: Add a limit into list to avoid browser to hang when database is too large. +Fix: [ bug #1212 ] 'jqueryFileTree.php' directory traversal vulnerability + +***** ChangeLog for 3.4.3 compared to 3.4.2 ***** +Fix: Warning into bank conciliation feature. +Fix: Bad get of localtaxes into contracts add lines. +Fix: Add a limit into list to avoid browser to hang when database is too large. +Fix: [ bug #1212 ] 'jqueryFileTree.php' directory traversal vulnerability + ***** ChangeLog for 3.4.2 compared to 3.4.1 ***** Fix: field's problem into company's page (RIB). Fix: Document cerfa doesn't contained firstname & lastname from donator. diff --git a/build/doxygen/dolibarr-doxygen-build.pl b/build/doxygen/dolibarr-doxygen-build.pl old mode 100644 new mode 100755 diff --git a/build/doxygen/dolibarr-doxygen-filter.pl b/build/doxygen/dolibarr-doxygen-filter.pl old mode 100644 new mode 100755 diff --git a/build/doxygen/dolibarr-doxygen-getversion.pl b/build/doxygen/dolibarr-doxygen-getversion.pl old mode 100644 new mode 100755 diff --git a/dev/dolibarr_changes.txt b/dev/dolibarr_changes.txt index 3f7f4767d4f78..2bf2e1a5c991b 100644 --- a/dev/dolibarr_changes.txt +++ b/dev/dolibarr_changes.txt @@ -54,3 +54,9 @@ window.location.href=pRef JCROP: ------ * Remove analytics tag into file index.html + + +JQUERYFILETREE: +--------------- +* Remove directory htdocs/includes/jquery/plugins/jqueryFileTree/connectors + diff --git a/htdocs/adherents/liste.php b/htdocs/adherents/liste.php index d4beb3ecdd97f..a4b9bdb7a5a2f 100644 --- a/htdocs/adherents/liste.php +++ b/htdocs/adherents/liste.php @@ -256,9 +256,9 @@ print ' '; print ''; - print ''; + print ''; print '  '; - print ''; + print ''; print ''; print "\n"; diff --git a/htdocs/admin/tools/listevents.php b/htdocs/admin/tools/listevents.php index ac5b825b4217a..d733182f054cd 100644 --- a/htdocs/admin/tools/listevents.php +++ b/htdocs/admin/tools/listevents.php @@ -188,7 +188,7 @@ print ''; print ''; - print ''; + print ''; print ''; print "\n"; diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index 7a6e34ec34629..244b198744876 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -575,6 +575,49 @@ function getObjectsInCateg($type) } } + /** + * check for the presence of an object in a category + * + * @param string $type Type of category ('member', 'customer', 'supplier', 'product', 'contact') + * @param int $object_id id of the object to search + * @return int number of occurrences + */ + function containsObject($type, $object_id) + { + $field = ''; $classname = ''; $category_table = ''; $object_table = ''; + if ($type == 'product') { + $field = 'product'; + } + if ($type == 'customer') { + $field = 'societe'; + } + if ($type == 'supplier') { + $field = 'societe'; + $category_table = 'fournisseur'; + } + if ($type == 'member') { + $field = 'member'; + $category_table = ''; + } + if ($type == 'contact') { + $field = 'socpeople'; + $category_table = 'contact'; + } + if (empty($category_table)) { + $category_table = $field; + } + $sql = "SELECT COUNT(*) as nb FROM " . MAIN_DB_PREFIX . "categorie_" . $category_table; + $sql .= " WHERE fk_categorie = " . $this->id . " AND fk_" . $field . " = " . $object_id; + dol_syslog(get_class($this)."::containsObject sql=".$sql); + $resql = $this->db->query($sql); + if ($resql) { + return $this->db->fetch_object($resql)->nb; + } else { + $this->error=$this->db->error().' sql='.$sql; + dol_syslog(get_class($this)."::containsObject ".$this->error, LOG_ERR); + return -1; + } + } /** * Return childs of a category diff --git a/htdocs/comm/contact.php b/htdocs/comm/contact.php index 5c85f745def0e..7f9d7ede4409b 100644 --- a/htdocs/comm/contact.php +++ b/htdocs/comm/contact.php @@ -141,7 +141,7 @@ print ''; print ''; print ' '; - print ''; + print ''; print "\n"; print ''; diff --git a/htdocs/comm/index.php b/htdocs/comm/index.php index 82989b1b842f5..cfa6e331dafa5 100644 --- a/htdocs/comm/index.php +++ b/htdocs/comm/index.php @@ -453,8 +453,10 @@ $var=true; print ''; - print ''; - while ($i < $num) + print ''; + + $nbofloop=min($num, (empty($conf->global->MAIN_MAXLIST_OVERLOAD)?1000:$conf->global->MAIN_MAXLIST_OVERLOAD)); + while ($i < $nbofloop) { $obj = $db->fetch_object($result); $var=!$var; @@ -491,7 +493,12 @@ $i++; $total += $obj->total_ttc; } - if ($total>0) { + if ($num > $nbofloop) + { + print '"; + } + else if ($total>0) + { print '"; } print "
'.$langs->trans("ProposalsOpened").'
'.$langs->trans("ProposalsOpened").' ('.$num.')
'.$langs->trans("XMoreLines", ($num - $nbofloop))."
'.$langs->trans("Total")."".price($total)." 

"; diff --git a/htdocs/comm/list.php b/htdocs/comm/list.php index ed12edd032a02..4e6ac38c81010 100644 --- a/htdocs/comm/list.php +++ b/htdocs/comm/list.php @@ -233,9 +233,9 @@ print $form->selectarray('search_status', array('0'=>$langs->trans('ActivityCeased'),'1'=>$langs->trans('InActivity')),$search_status); print ''; - print ''; + print ''; print '  '; - print ''; + print ''; print ''; $parameters=array(); diff --git a/htdocs/comm/mailing/cibles.php b/htdocs/comm/mailing/cibles.php index 5b3ec5bfc1d9a..916a616366872 100644 --- a/htdocs/comm/mailing/cibles.php +++ b/htdocs/comm/mailing/cibles.php @@ -434,9 +434,9 @@ print ''; // Source print ''; - print ''; + print ''; print '  '; - print ''; + print ''; print ''; print ''; diff --git a/htdocs/comm/mailing/fiche.php b/htdocs/comm/mailing/fiche.php index 3510df7339eef..8217727e2026d 100644 --- a/htdocs/comm/mailing/fiche.php +++ b/htdocs/comm/mailing/fiche.php @@ -71,6 +71,11 @@ '__UNSUBSCRIBE__' => 'TagUnsubscribe' //,'__PERSONALIZED__' => 'Personalized' // Hidden because not used yet ); +if (! empty($conf->paypal->enabled) && ! empty($conf->global->PAYPAL_SECURITY_TOKEN)) +{ + $object->substitutionarray['__SECUREKEYPAYPAL__']='SecureKeyPaypal'; + if (! empty($conf->global->PAYPAL_SECURITY_TOKEN_UNIQUE)) $object->substitutionarray['__SECUREKEYPAYPAL_MEMBER__']='SecureKeyPaypalUniquePerMember'; +} $object->substitutionarrayfortest=array( '__ID__' => 'TESTIdRecord', @@ -86,7 +91,7 @@ '__SIGNATURE__' => (($user->signature && empty($conf->global->MAIN_MAIL_DO_NOT_USE_SIGN))?$user->signature:''), '__CHECK_READ__' => 'TagCheckMail', '__UNSUBSCRIBE__' => 'TagUnsubscribe' -//,'__PERSONALIZED__' => 'TESTPersonalized' // Not used yet + //,'__PERSONALIZED__' => 'TESTPersonalized' // Not used yet ); @@ -222,7 +227,12 @@ '__OTHER4__' => $other4, '__OTHER5__' => $other5 ); - + if (! empty($conf->paypal->enabled) && ! empty($conf->global->PAYPAL_SECURITY_TOKEN)) + { + $substitutionarray['__SECUREKEYPAYPAL__']=dol_hash($conf->global->PAYPAL_SECURITY_TOKEN, 2); + if (empty($conf->global->PAYPAL_SECURITY_TOKEN_UNIQUE)) $substitutionarray['__SECUREKEYPAYPAL_MEMBER__']=dol_hash($conf->global->PAYPAL_SECURITY_TOKEN, 2); + else $substitutionarray['__SECUREKEYPAYPAL_MEMBER__']=dol_hash($conf->global->PAYPAL_SECURITY_TOKEN . 'membersubscription' . $obj->source_id, 2); + } $substitutionisok=true; complete_substitutions_array($substitutionarray, $langs); $newsubject=make_substitutions($subject,$substitutionarray); @@ -1080,7 +1090,7 @@ { $out.= '
'; $out.= img_mime($listofpaths[$key]['name']).' '.$listofpaths[$key]['name']; - $out.= ' '; + $out.= ' '; $out.= '
'; } } diff --git a/htdocs/comm/mailing/liste.php b/htdocs/comm/mailing/liste.php index 41a4e57a7ac9e..81af4f4f6e680 100644 --- a/htdocs/comm/mailing/liste.php +++ b/htdocs/comm/mailing/liste.php @@ -121,7 +121,7 @@ print ' '; if (! $filteremail) print ' '; print ' '; - print ''; + print ''; print ""; print "\n"; print ''; diff --git a/htdocs/comm/propal/index.php b/htdocs/comm/propal/index.php index 45a594c12cd4a..cdd7e6840c9fe 100644 --- a/htdocs/comm/propal/index.php +++ b/htdocs/comm/propal/index.php @@ -313,8 +313,10 @@ $var=true; print ''; - print ''; - while ($i < $num) + print ''; + + $nbofloop=min($num, (empty($conf->global->MAIN_MAXLIST_OVERLOAD)?1000:$conf->global->MAIN_MAXLIST_OVERLOAD)); + while ($i < $nbofloop) { $obj = $db->fetch_object($result); $var=!$var; @@ -356,7 +358,12 @@ $i++; $total += $obj->total_ttc; } - if ($total>0) { + if ($num > $nbofloop) + { + print '"; + } + else if ($total>0) + { print '"; } print "
'.$langs->trans("ProposalsOpened").' ('.$num.')
'.$langs->trans("ProposalsOpened").' ('.$num.')
'.$langs->trans("XMoreLines", ($num - $nbofloop))."
'.$langs->trans("Total")."".price($total)." 

"; diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php index 262ccbfe91e53..7a652631d676f 100644 --- a/htdocs/comm/propal/list.php +++ b/htdocs/comm/propal/list.php @@ -309,7 +309,7 @@ print ''; $formpropal->select_propal_statut($viewstatut,1); print ''; - print ''; + print ''; print ''; print "\n"; diff --git a/htdocs/comm/propal/note.php b/htdocs/comm/propal/note.php index 7e31518d4024c..2ed0f5e5dadd7 100644 --- a/htdocs/comm/propal/note.php +++ b/htdocs/comm/propal/note.php @@ -49,7 +49,7 @@ /* Actions */ /******************************************************************************/ -$permission=$user->rights->propale->creer; // Used by the include of actions_setnotes.inc.php +$permissionnote=$user->rights->propale->creer; // Used by the include of actions_setnotes.inc.php include DOL_DOCUMENT_ROOT.'/core/actions_setnotes.inc.php'; // Must be include, not includ_once diff --git a/htdocs/comm/prospect/list.php b/htdocs/comm/prospect/list.php index 18038d3ed44f3..767a29f0b88ad 100644 --- a/htdocs/comm/prospect/list.php +++ b/htdocs/comm/prospect/list.php @@ -378,7 +378,7 @@ // Print the search button print ''; - print ''; + print ''; print ''; $parameters=array(); diff --git a/htdocs/commande/customer.php b/htdocs/commande/customer.php index 35a5891d60489..373775a0da09a 100644 --- a/htdocs/commande/customer.php +++ b/htdocs/commande/customer.php @@ -142,7 +142,7 @@ print ''; print ''; - print ''; + print ''; print ''; print "\n"; diff --git a/htdocs/commande/liste.php b/htdocs/commande/liste.php index aaf6b5312ae19..c4a416f1898a9 100644 --- a/htdocs/commande/liste.php +++ b/htdocs/commande/liste.php @@ -301,7 +301,7 @@ print ' '; print ' '; print ''; - print ''; + print ''; print ''; $var=true; diff --git a/htdocs/commande/orderstoinvoice.php b/htdocs/commande/orderstoinvoice.php index 806fd95a95795..aa2883ccb96a3 100644 --- a/htdocs/commande/orderstoinvoice.php +++ b/htdocs/commande/orderstoinvoice.php @@ -603,7 +603,7 @@ //SEARCH BUTTON print ''; - print ''; + print ''; //ALL/NONE print ''; diff --git a/htdocs/compta/bank/account.php b/htdocs/compta/bank/account.php index 319ba7ab9d9ab..d85d6ff3b271b 100644 --- a/htdocs/compta/bank/account.php +++ b/htdocs/compta/bank/account.php @@ -422,7 +422,7 @@ print ''; print ''; print ' '; - print ''; + print ''; print "\n"; diff --git a/htdocs/compta/bank/search.php b/htdocs/compta/bank/search.php index 650733dbb9c59..a94e2fc5cd021 100644 --- a/htdocs/compta/bank/search.php +++ b/htdocs/compta/bank/search.php @@ -184,7 +184,7 @@ print ''; print ''; if (! empty($_REQUEST['bid'])) print ''; - print ''; + print ''; print ''; print ''; diff --git a/htdocs/compta/clients.php b/htdocs/compta/clients.php index f54f893d79c0b..4f6719adb145e 100644 --- a/htdocs/compta/clients.php +++ b/htdocs/compta/clients.php @@ -173,7 +173,7 @@ print ''; print ''; - print ''; + print ''; print ''; print "\n"; diff --git a/htdocs/compta/deplacement/list.php b/htdocs/compta/deplacement/list.php index 330f493e6bab1..94a3a26a0f312 100644 --- a/htdocs/compta/deplacement/list.php +++ b/htdocs/compta/deplacement/list.php @@ -119,7 +119,7 @@ print ''; print ' '; print ''; - print ''; + print ''; print "\n"; $var=true; diff --git a/htdocs/compta/dons/liste.php b/htdocs/compta/dons/liste.php index 56c66d4fdce83..f045e82be71ac 100644 --- a/htdocs/compta/dons/liste.php +++ b/htdocs/compta/dons/liste.php @@ -144,7 +144,7 @@ print ''; print ' '; print ''; - print ''; + print ''; print "\n"; $var=True; diff --git a/htdocs/compta/facture/impayees.php b/htdocs/compta/facture/impayees.php index 3d792e343f0d5..d17507558351c 100644 --- a/htdocs/compta/facture/impayees.php +++ b/htdocs/compta/facture/impayees.php @@ -299,7 +299,7 @@ print ' '; print ' '; print ''; - print ''; + print ''; print ''; print ''; if ($conf->use_javascript_ajax) print ''.$langs->trans("All").' / '.$langs->trans("None").''; diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index 83b9fd309458e..42d08c3b02cb3 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -317,7 +317,7 @@ print ' '; print ''; print ' '; - print ''; + print ''; print "\n"; if ($num > 0) diff --git a/htdocs/compta/paiement/cheque/liste.php b/htdocs/compta/paiement/cheque/liste.php index 1c1cf71b11c99..7f656a75c7998 100644 --- a/htdocs/compta/paiement/cheque/liste.php +++ b/htdocs/compta/paiement/cheque/liste.php @@ -102,7 +102,7 @@ print ''; print ''; print ''; - print ''; + print ''; print ''; print "\n"; diff --git a/htdocs/compta/paiement/liste.php b/htdocs/compta/paiement/liste.php index 5e1653b3ec351..16a6c1410e689 100644 --- a/htdocs/compta/paiement/liste.php +++ b/htdocs/compta/paiement/liste.php @@ -167,7 +167,7 @@ print ''; print ''; print ''; - print ''; + print ''; print ''; if (! empty($conf->global->BILL_ADD_PAYMENT_VALIDATION)) { diff --git a/htdocs/compta/prelevement/bons.php b/htdocs/compta/prelevement/bons.php index d5c140be91e57..cd460f1aac22c 100644 --- a/htdocs/compta/prelevement/bons.php +++ b/htdocs/compta/prelevement/bons.php @@ -88,7 +88,7 @@ print '
'; print ''; print ' '; - print ''; + print ''; print '
'; print ''; diff --git a/htdocs/compta/prelevement/demandes.php b/htdocs/compta/prelevement/demandes.php index 3ae2b850aac7b..e48896458693f 100644 --- a/htdocs/compta/prelevement/demandes.php +++ b/htdocs/compta/prelevement/demandes.php @@ -114,7 +114,7 @@ print '
'; print ''; print ''; - print ''; + print ''; print ''; print '
'; diff --git a/htdocs/compta/prelevement/liste.php b/htdocs/compta/prelevement/liste.php index 5ed627dee587d..2cd859969a911 100644 --- a/htdocs/compta/prelevement/liste.php +++ b/htdocs/compta/prelevement/liste.php @@ -129,7 +129,7 @@ print ''; print ' '; print ' '; - print ''; + print ''; print ''; print ''; diff --git a/htdocs/compta/sociales/index.php b/htdocs/compta/sociales/index.php index 54cb9fc0c42d1..e96c53895299b 100644 --- a/htdocs/compta/sociales/index.php +++ b/htdocs/compta/sociales/index.php @@ -162,7 +162,7 @@ print ' '; print ' '; print ''; - print ''; + print ''; print ''; print "\n"; diff --git a/htdocs/compta/stats/cabyprodserv.php b/htdocs/compta/stats/cabyprodserv.php index e24ca5dd56b83..ac82e2e342ac8 100644 --- a/htdocs/compta/stats/cabyprodserv.php +++ b/htdocs/compta/stats/cabyprodserv.php @@ -252,7 +252,7 @@ } print '>'; print ''; - print ''; + print ''; print ''; // Array header print ""; diff --git a/htdocs/compta/stats/casoc.php b/htdocs/compta/stats/casoc.php index 97333f1758cc3..9745ef1629086 100644 --- a/htdocs/compta/stats/casoc.php +++ b/htdocs/compta/stats/casoc.php @@ -322,7 +322,7 @@ } print'>'; print ''; -print ''; +print ''; print ''; print ''; // Array titles diff --git a/htdocs/compta/ventilation/lignes.php b/htdocs/compta/ventilation/lignes.php index e8578e7dcf096..fbc8655717811 100644 --- a/htdocs/compta/ventilation/lignes.php +++ b/htdocs/compta/ventilation/lignes.php @@ -90,7 +90,7 @@ print ' '; print ' '; print ''; - print ''; + print ''; print ''; print "\n"; diff --git a/htdocs/contact/list.php b/htdocs/contact/list.php index 5aafde9e40bc4..1b8cba0d88e9b 100644 --- a/htdocs/contact/list.php +++ b/htdocs/contact/list.php @@ -343,9 +343,9 @@ print $form->selectarray('search_status', array('0'=>$langs->trans('ActivityCeased'),'1'=>$langs->trans('InActivity')),$search_status); print ''; print ''; - print ''; + print ''; print '  '; - print ''; + print ''; print ''; print ''; diff --git a/htdocs/contrat/liste.php b/htdocs/contrat/liste.php index 40a6811e41b9a..38576f7e764c7 100644 --- a/htdocs/contrat/liste.php +++ b/htdocs/contrat/liste.php @@ -129,7 +129,7 @@ print ''; print ' '; //print ' '; - print ''; + print ''; print ""; print "\n"; print ''; diff --git a/htdocs/contrat/services.php b/htdocs/contrat/services.php index ea42df9e01dd9..2f42fc39c77ff 100644 --- a/htdocs/contrat/services.php +++ b/htdocs/contrat/services.php @@ -184,7 +184,7 @@ $filter_date2=dol_mktime(0,0,0,$op2month,$op2day,$op2year); print $form->select_date($filter_date2,'op2',0,0,1); print ''; - print ''; + print ''; print ""; print "\n"; print ''; diff --git a/htdocs/core/boxes/box_comptes.php b/htdocs/core/boxes/box_comptes.php index 9b80ffefb7400..17fd2a63fed6b 100644 --- a/htdocs/core/boxes/box_comptes.php +++ b/htdocs/core/boxes/box_comptes.php @@ -85,7 +85,7 @@ function loadBox($max=5) $sql.= " FROM ".MAIN_DB_PREFIX."bank_account"; $sql.= " WHERE entity = ".$conf->entity; $sql.= " AND clos = 0"; - $sql.= " AND courant = 1"; + //$sql.= " AND courant = 1"; $sql.= " ORDER BY label"; $sql.= $db->plimit($max, 0); diff --git a/htdocs/core/class/commondocgenerator.class.php b/htdocs/core/class/commondocgenerator.class.php index 86d924b5fa29e..ee5ab2cbae9ef 100644 --- a/htdocs/core/class/commondocgenerator.class.php +++ b/htdocs/core/class/commondocgenerator.class.php @@ -170,7 +170,8 @@ function get_substitutionarray_thirdparty($object,$outputlangs) 'company_idprof4'=>$object->idprof4, 'company_idprof5'=>$object->idprof5, 'company_idprof6'=>$object->idprof6, - 'company_note'=>$object->note + 'company_note_public'=>$object->note_public, + 'company_note_private'=>$object->note_private ); // Retrieve extrafields @@ -260,7 +261,7 @@ function get_substitutionarray_propal($object,$outputlangs,$array_key='object') $array_key.'_total_localtax2'=>price2num($object->total_localtax2), $array_key.'_total_ttc'=>price2num($object->total_ttc), $array_key.'_total_discount_ht' => price2num($object->getTotalDiscount()), - + $array_key.'_vatrate'=>vatrate($object->tva), $array_key.'_note_private'=>$object->note, $array_key.'_note'=>$object->note_public, @@ -314,7 +315,7 @@ function get_substitutionarray_propal_lines($line,$outputlangs) 'line_date_end'=>$line->date_end ); } - + /** * Define array with couple substitution key => substitution value * diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index 9c0968436d3e4..172d65b4ca6b0 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -796,7 +796,7 @@ function list_of_documents($filearray,$object,$modulepart,$param='',$forcedownlo { print ''; $tmp=explode('.',$file['name']); - $minifile=$tmp[0].'_mini.'.$tmp[1]; + $minifile=$tmp[0].'_mini.'.strtolower($tmp[1]); // Thumbs are created with filename in lower case if (image_format_supported($file['name']) > 0) print ''; else print ' '; print ''; diff --git a/htdocs/core/lib/admin.lib.php b/htdocs/core/lib/admin.lib.php index 3eb92fb26a3c2..3cfb0adeb7d51 100644 --- a/htdocs/core/lib/admin.lib.php +++ b/htdocs/core/lib/admin.lib.php @@ -557,7 +557,13 @@ function listOfSessions() global $conf; $arrayofSessions = array(); - $sessPath = ini_get("session.save_path").'/'; + // session.save_path can be returned empty so we set a default location and work from there + $sessPath = '/tmp'; + $iniPath = ini_get("session.save_path"); + if ($iniPath) { + $sessPath = $iniPath; + } + $sessPath .= '/'; // We need the trailing slash dol_syslog('admin.lib:listOfSessions sessPath='.$sessPath); $dh = @opendir(dol_osencode($sessPath)); diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index 1437d5d99749b..5ea8f503ad8b6 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -631,7 +631,7 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='') // Edit print ''; - print ''; + print ''; print ''; print ""; diff --git a/htdocs/core/lib/files.lib.php b/htdocs/core/lib/files.lib.php index 3df77ec722a1f..dd4ff4b6ed39d 100644 --- a/htdocs/core/lib/files.lib.php +++ b/htdocs/core/lib/files.lib.php @@ -538,13 +538,13 @@ function dol_move($srcfile, $destfile, $newmask=0, $overwriteifexists=1) $newpathofdestfile=dol_osencode($destfile); $result=@rename($newpathofsrcfile, $newpathofdestfile); // To see errors, remove @ - if (! $result) + if (! $result) { - if ($destexists) + if ($destexists) { dol_syslog("files.lib.php::dol_move failed. We try to delete first and move after.", LOG_WARNING); // We force delete and try again. Rename function sometimes fails to replace dest file with some windows NTFS partitions. - dol_delete_file($destfile); + dol_delete_file($destfile); $result=@rename($newpathofsrcfile, $newpathofdestfile); // To see errors, remove @ } else dol_syslog("files.lib.php::dol_move failed", LOG_WARNING); @@ -726,6 +726,8 @@ function dol_delete_file($file,$disableglob=0,$nophperrors=0,$nohook=0,$object=n $langs->load("other"); $langs->load("errors"); + dol_syslog("dol_delete_file file=".$file." disableglob=".$disableglob." nophperrors=".$nophperrors." nohook=".$nohook); + if (empty($nohook)) { $hookmanager->initHooks(array('fileslib')); @@ -1301,7 +1303,7 @@ function dol_check_secure_access_document($modulepart,$original_file,$entity,$fu if (empty($modulepart)) return 'ErrorBadParameter'; if (empty($entity)) $entity=0; - dol_syslog('modulepart='.$modulepart.' original_file= '.$original_file); + dol_syslog('modulepart='.$modulepart.' original_file='.$original_file); // We define $accessallowed and $sqlprotectagainstexternals $accessallowed=0; $sqlprotectagainstexternals=''; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 906eb08dd8131..31e2a1344b40a 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -2406,8 +2406,8 @@ function getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $m // If field is used as sort criteria we use a specific class // Example if (sortfield,field)=("nom","xxx.nom") or (sortfield,field)=("nom","nom") - if ($field && ($sortfield == $field || $sortfield == preg_replace("/^[^\.]+\./","",$field))) $out.= '<'.$tag.' class="liste_titre_sel'.($field?' nowrap':'').'" '. $moreattrib.'>'; - else $out.= '<'.$tag.' class="liste_titre'.($field?' nowrap':'').'" '. $moreattrib.'>'; + if ($field && ($sortfield == $field || $sortfield == preg_replace("/^[^\.]+\./","",$field))) $out.= '<'.$tag.' class="liste_titre_sel" '. $moreattrib.'>'; + else $out.= '<'.$tag.' class="liste_titre" '. $moreattrib.'>'; if (! empty($conf->dol_optimize_smallscreen) && empty($thead) && $field) // If this is a sort field { @@ -2435,7 +2435,7 @@ function getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $m if (! preg_match('/^&/',$options)) $options='&'.$options; //print " "; - $out.= ''; + $out.= ''; if (! $sortorder || $field != $sortfield) { @@ -2453,6 +2453,8 @@ function getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $m $out.= ''.img_up("Z-A",0).''; } } + + $out.= ''; } $out.=''; diff --git a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php index a954c68c9067a..a58a52aec6774 100644 --- a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php +++ b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php @@ -244,12 +244,24 @@ function write_file($object,$outputlangs,$srctemplatepath='',$hidedetails=0,$hid $tab_height_newpage = 150; // Affiche notes - if (! empty($object->note_public)) + $notetoshow=empty($object->note_public)?'':$object->note_public; + if (! empty($conf->global->MAIN_ADD_SALE_REP_SIGNATURE_IN_NOTE)) + { + // Get first sale rep + if (is_object($object->thirdparty)) + { + $salereparray=$object->thirdparty->getSalesRepresentatives($user); + $salerepobj=new User($this->db); + $salerepobj->fetch($salereparray[0]['id']); + if (! empty($salerepobj->signature)) $notetoshow=dol_concatdesc($notetoshow, $salerepobj->signature); + } + } + if ($notetoshow) { $tab_top = 88; $pdf->SetFont('','', $default_font_size - 1); - $pdf->writeHTMLCell(190, 3, $this->posxdesc-1, $tab_top, dol_htmlentitiesbr($object->note_public), 0, 1); + $pdf->writeHTMLCell(190, 3, $this->posxdesc-1, $tab_top, dol_htmlentitiesbr($notetoshow), 0, 1); $nexY = $pdf->GetY(); $height_note=$nexY-$tab_top; diff --git a/htdocs/core/modules/commande/doc/pdf_proforma.modules.php b/htdocs/core/modules/commande/doc/pdf_proforma.modules.php index 35d7dd3f9fca6..9733b30ded67d 100644 --- a/htdocs/core/modules/commande/doc/pdf_proforma.modules.php +++ b/htdocs/core/modules/commande/doc/pdf_proforma.modules.php @@ -244,12 +244,24 @@ function write_file($object,$outputlangs,$srctemplatepath='',$hidedetails=0,$hid $tab_height_newpage = 150; // Affiche notes - if (! empty($object->note_public)) + $notetoshow=empty($object->note_public)?'':$object->note_public; + if (! empty($conf->global->MAIN_ADD_SALE_REP_SIGNATURE_IN_NOTE)) + { + // Get first sale rep + if (is_object($object->thirdparty)) + { + $salereparray=$object->thirdparty->getSalesRepresentatives($user); + $salerepobj=new User($this->db); + $salerepobj->fetch($salereparray[0]['id']); + if (! empty($salerepobj->signature)) $notetoshow=dol_concatdesc($notetoshow, $salerepobj->signature); + } + } + if ($notetoshow) { $tab_top = 88; $pdf->SetFont('','', $default_font_size - 1); - $pdf->writeHTMLCell(190, 3, $this->posxdesc-1, $tab_top, dol_htmlentitiesbr($object->note_public), 0, 1); + $pdf->writeHTMLCell(190, 3, $this->posxdesc-1, $tab_top, dol_htmlentitiesbr($notetoshow), 0, 1); $nexY = $pdf->GetY(); $height_note=$nexY-$tab_top; diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php index 0f2ac346e695e..ebbe4727cfeea 100644 --- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php @@ -245,12 +245,24 @@ function write_file($object,$outputlangs,$srctemplatepath='',$hidedetails=0,$hid $tab_height_newpage = 150; // Affiche notes - if (! empty($object->note_public)) + $notetoshow=empty($object->note_public)?'':$object->note_public; + if (! empty($conf->global->MAIN_ADD_SALE_REP_SIGNATURE_IN_NOTE)) + { + // Get first sale rep + if (is_object($object->thirdparty)) + { + $salereparray=$object->thirdparty->getSalesRepresentatives($user); + $salerepobj=new User($this->db); + $salerepobj->fetch($salereparray[0]['id']); + if (! empty($salerepobj->signature)) $notetoshow=dol_concatdesc($notetoshow, $salerepobj->signature); + } + } + if ($notetoshow) { $tab_top = 88; $pdf->SetFont('','', $default_font_size - 1); - $pdf->writeHTMLCell(190, 3, $this->posxdesc-1, $tab_top, dol_htmlentitiesbr($object->note_public), 0, 1); + $pdf->writeHTMLCell(190, 3, $this->posxdesc-1, $tab_top, dol_htmlentitiesbr($notetoshow), 0, 1); $nexY = $pdf->GetY(); $height_note=$nexY-$tab_top; @@ -378,7 +390,7 @@ function write_file($object,$outputlangs,$srctemplatepath='',$hidedetails=0,$hid if ($object->remise_percent) $localtax2ligne-=($localtax2ligne*$object->remise_percent)/100; $vatrate=(string) $object->lines[$i]->tva_tx; - + // Retrieve type from database for backward compatibility with old records if ((! isset($localtax1_type) || $localtax1_type=='' || ! isset($localtax2_type) || $localtax2_type=='') // if tax type not defined && (! empty($localtax1_rate) || ! empty($localtax2_rate))) // and there is local tax diff --git a/htdocs/core/modules/modAgenda.class.php b/htdocs/core/modules/modAgenda.class.php index d927af0c4a489..4e552d7cad7e1 100644 --- a/htdocs/core/modules/modAgenda.class.php +++ b/htdocs/core/modules/modAgenda.class.php @@ -23,15 +23,15 @@ /** * \defgroup agenda Module agenda - * \brief Module pour gerer l'agenda et actions + * \brief Module to manage agenda and events * \file htdocs/core/modules/modAgenda.class.php * \ingroup agenda - * \brief Fichier de description et activation du module agenda + * \brief File of class to describe and enable/disable module Agenda */ include_once DOL_DOCUMENT_ROOT .'/core/modules/DolibarrModules.class.php'; /** - * Classe de description et activation du module Adherent + * Class to describe and enable/disable module Agenda */ class modAgenda extends DolibarrModules { diff --git a/htdocs/core/modules/modOpenSurvey.class.php b/htdocs/core/modules/modOpenSurvey.class.php index 6743d415ff14f..9f643170588d4 100644 --- a/htdocs/core/modules/modOpenSurvey.class.php +++ b/htdocs/core/modules/modOpenSurvey.class.php @@ -17,11 +17,8 @@ */ /** - * \defgroup opensurvey Module OpenSurvey + * \defgroup opensurvey Module opensurvey * \brief Module to OpenSurvey integration. - */ - -/** * \file htdocs/core/modules/modOpenSurvey.class.php * \ingroup opensurvey * \brief Description and activation file for module OpenSurvey diff --git a/htdocs/core/modules/modProduct.class.php b/htdocs/core/modules/modProduct.class.php index 088c688a4fde3..43cab4f72cff6 100644 --- a/htdocs/core/modules/modProduct.class.php +++ b/htdocs/core/modules/modProduct.class.php @@ -5,6 +5,7 @@ * Copyright (C) 2004 Benoit Mortier * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2012-2013 Juanjo Menent + * Copyright (C) 2014 Christophe Battarel * * 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 @@ -140,12 +141,15 @@ function __construct($db) $this->export_fields_array[$r]=array('p.rowid'=>"Id",'p.ref'=>"Ref",'p.label'=>"Label",'p.description'=>"Description",'p.accountancy_code_sell'=>"ProductAccountancySellCode",'p.accountancy_code_buy'=>"ProductAccountancyBuyCode",'p.note'=>"Note",'p.length'=>"Length",'p.surface'=>"Surface",'p.volume'=>"Volume",'p.weight'=>"Weight",'p.customcode'=>'CustomCode','p.price_base_type'=>"PriceBase",'p.price'=>"UnitPriceHT",'p.price_ttc'=>"UnitPriceTTC",'p.tva_tx'=>'VATRate','p.tosell'=>"OnSell",'p.tobuy'=>"OnBuy",'p.datec'=>'DateCreation','p.tms'=>'DateModification'); if (! empty($conf->stock->enabled)) $this->export_fields_array[$r]=array_merge($this->export_fields_array[$r],array('p.stock'=>'Stock','p.pmp'=>'PMPValue')); if (! empty($conf->barcode->enabled)) $this->export_fields_array[$r]=array_merge($this->export_fields_array[$r],array('p.barcode'=>'BarCode')); + if (! empty($conf->fournisseur->enabled)) $this->export_fields_array[$r]=array_merge($this->export_fields_array[$r],array('s.nom'=>'Supplier','pf.ref_fourn'=>'SupplierRef','pf.unitprice'=>'SuppliersPrices')); $this->export_TypeFields_array[$r]=array('p.ref'=>"Text",'p.label'=>"Text",'p.description'=>"Text",'p.accountancy_code_sell'=>"Text",'p.accountancy_code_buy'=>"Text",'p.note'=>"Text",'p.length'=>"Number",'p.surface'=>"Number",'p.volume'=>"Number",'p.weight'=>"Number",'p.customcode'=>'Text','p.price_base_type'=>"Text",'p.price'=>"Number",'p.price_ttc'=>"Number",'p.tva_tx'=>'Number','p.tosell'=>"Boolean",'p.tobuy'=>"Boolean",'p.datec'=>'Date','p.tms'=>'Date'); if (! empty($conf->stock->enabled)) $this->export_TypeFields_array[$r]=array_merge($this->export_TypeFields_array[$r],array('p.pmp'=>'Number')); if (! empty($conf->barcode->enabled)) $this->export_TypeFields_array[$r]=array_merge($this->export_TypeFields_array[$r],array('p.barcode'=>'Text')); - $this->export_entities_array[$r]=array('p.rowid'=>"product",'p.ref'=>"product",'p.label'=>"product",'p.description'=>"product",'p.accountancy_code_sell'=>'product','p.note'=>"product",'p.length'=>"product",'p.surface'=>"product",'p.volume'=>"product",'p.weight'=>"product",'p.customcode'=>'product','p.price_base_type'=>"product",'p.price'=>"product",'p.price_ttc'=>"product",'p.tva_tx'=>"product",'p.tosell'=>"product",'p.tobuy'=>"product",'p.datec'=>"product",'p.tms'=>"product"); + if (! empty($conf->fournisseur->enabled)) $this->export_TypeFields_array[$r]=array_merge($this->export_TypeFields_array[$r],array('s.nom'=>'Text','pf.ref_fourn'=>'Text','pf.unitprice'=>'Number')); + $this->export_entities_array[$r]=array('p.rowid'=>"product",'p.ref'=>"product",'p.label'=>"product",'p.description'=>"product",'p.accountancy_code_sell'=>'product','p.accountancy_code_sell'=>'product','p.note'=>"product",'p.length'=>"product",'p.surface'=>"product",'p.volume'=>"product",'p.weight'=>"product",'p.customcode'=>'product','p.price_base_type'=>"product",'p.price'=>"product",'p.price_ttc'=>"product",'p.tva_tx'=>"product",'p.tosell'=>"product",'p.tobuy'=>"product",'p.datec'=>"product",'p.tms'=>"product"); if (! empty($conf->stock->enabled)) $this->export_entities_array[$r]=array_merge($this->export_entities_array[$r],array('p.stock'=>'product','p.pmp'=>'product')); if (! empty($conf->barcode->enabled)) $this->export_entities_array[$r]=array_merge($this->export_entities_array[$r],array('p.barcode'=>'product')); + if (! empty($conf->fournisseur->enabled)) $this->export_entities_array[$r]=array_merge($this->export_entities_array[$r],array('s.nom'=>'product','pf.ref_fourn'=>'product','pf.unitprice'=>'product')); // Add extra fields $sql="SELECT name, label, type FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'product'"; $resql=$this->db->query($sql); @@ -184,6 +188,7 @@ function __construct($db) $this->export_sql_start[$r]='SELECT DISTINCT '; $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'product as p'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product_extrafields as extra ON p.rowid = extra.fk_object'; + if (! empty($conf->fournisseur->enabled)) $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product_fournisseur_price as pf ON pf.fk_product = p.rowid LEFT JOIN '.MAIN_DB_PREFIX.'societe s ON s.rowid = pf.fk_soc'; $this->export_sql_end[$r] .=' WHERE p.fk_product_type = 0 AND p.entity IN ('.getEntity("product", 1).')'; diff --git a/htdocs/core/modules/modSkype.class.php b/htdocs/core/modules/modSkype.class.php index 6f7da0d3e73d0..6a009956b5b83 100644 --- a/htdocs/core/modules/modSkype.class.php +++ b/htdocs/core/modules/modSkype.class.php @@ -16,11 +16,11 @@ */ /** - * \defgroup Skype Module Skype + * \defgroup Skype Module skype * \brief Add a skype button. * \file htdocs/core/modules/modSkype.class.php * \ingroup Skype - * \brief Description and activation file for module Skype + * \brief Description and activation file for module skype */ include_once DOL_DOCUMENT_ROOT .'/core/modules/DolibarrModules.class.php'; diff --git a/htdocs/core/modules/propale/doc/pdf_azur.modules.php b/htdocs/core/modules/propale/doc/pdf_azur.modules.php index fbe3fb98bbfa8..700e558668ecc 100644 --- a/htdocs/core/modules/propale/doc/pdf_azur.modules.php +++ b/htdocs/core/modules/propale/doc/pdf_azur.modules.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2004-2014 Laurent Destailleur * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2008 Raphael Bertrand * Copyright (C) 2010-2013 Juanjo Menent @@ -153,7 +153,7 @@ function write_file($object,$outputlangs,$srctemplatepath='',$hidedetails=0,$hid $outputlangs->load("products"); $nblignes = count($object->lines); - + // Loop on each lines to detect if there is at least one image to show $realpatharray=array(); if (! empty($conf->global->MAIN_GENERATE_PROPOSALS_WITH_PICTURE)) @@ -161,7 +161,7 @@ function write_file($object,$outputlangs,$srctemplatepath='',$hidedetails=0,$hid for ($i = 0 ; $i < $nblignes ; $i++) { if (empty($object->lines[$i]->fk_product)) continue; - + $objphoto = new Product($this->db); $objphoto->fetch($object->lines[$i]->fk_product); @@ -185,7 +185,7 @@ function write_file($object,$outputlangs,$srctemplatepath='',$hidedetails=0,$hid if ($conf->propal->dir_output) { $object->fetch_thirdparty(); - + // $deja_regle = 0; // Definition of $dir and $file @@ -270,12 +270,24 @@ function write_file($object,$outputlangs,$srctemplatepath='',$hidedetails=0,$hid $tab_height_newpage = 150; // Affiche notes - if (! empty($object->note_public)) + $notetoshow=empty($object->note_public)?'':$object->note_public; + if (! empty($conf->global->MAIN_ADD_SALE_REP_SIGNATURE_IN_NOTE)) + { + // Get first sale rep + if (is_object($object->thirdparty)) + { + $salereparray=$object->thirdparty->getSalesRepresentatives($user); + $salerepobj=new User($this->db); + $salerepobj->fetch($salereparray[0]['id']); + if (! empty($salerepobj->signature)) $notetoshow=dol_concatdesc($notetoshow, $salerepobj->signature); + } + } + if ($notetoshow) { $tab_top = 88; $pdf->SetFont('','', $default_font_size - 1); - $pdf->writeHTMLCell(190, 3, $this->posxdesc-1, $tab_top, dol_htmlentitiesbr($object->note_public), 0, 1); + $pdf->writeHTMLCell(190, 3, $this->posxdesc-1, $tab_top, dol_htmlentitiesbr($notetoshow), 0, 1); $nexY = $pdf->GetY(); $height_note=$nexY-$tab_top; diff --git a/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php b/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php index ccc3ed8c17b74..34c031734f1a7 100644 --- a/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php +++ b/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php @@ -166,8 +166,10 @@ function write_file($object, $outputlangs='', $srctemplatepath='', $hidedetails= else { $objectref = dol_sanitizeFileName($object->ref); + $objectrefsupplier = dol_sanitizeFileName($object->ref_supplier); $dir = $conf->fournisseur->facture->dir_output.'/'.get_exdir($object->id,2).$objectref; $file = $dir . "/" . $objectref . ".pdf"; + if (! empty($conf->global->SUPPLIER_REF_IN_NAME)) $file = $dir . "/" . $objectref . ($objectrefsupplier?"_".$objectrefsupplier:"").".pdf"; } if (! file_exists($dir)) 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 efa93e17aecda..0b580a41de87d 100644 --- a/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php +++ b/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php @@ -174,8 +174,10 @@ function write_file($object,$outputlangs='',$srctemplatepath='',$hidedetails=0,$ else { $objectref = dol_sanitizeFileName($object->ref); + $objectrefsupplier = dol_sanitizeFileName($object->ref_supplier); $dir = $conf->fournisseur->commande->dir_output . '/'. $objectref; $file = $dir . "/" . $objectref . ".pdf"; + if (! empty($conf->global->SUPPLIER_REF_IN_NAME)) $file = $dir . "/" . $objectref . ($objectrefsupplier?"_".$objectrefsupplier:"").".pdf"; } if (! file_exists($dir)) diff --git a/htdocs/core/tpl/document_actions_pre_headers.tpl.php b/htdocs/core/tpl/document_actions_pre_headers.tpl.php index 06edca3c7c7c5..7bfc59641407b 100644 --- a/htdocs/core/tpl/document_actions_pre_headers.tpl.php +++ b/htdocs/core/tpl/document_actions_pre_headers.tpl.php @@ -41,12 +41,17 @@ { if ($object->id) { - $urlfile = GETPOST('urlfile', 'alpha'); - $linkid = GETPOST('linkid', 'int'); + $urlfile = GETPOST('urlfile', 'alpha'); // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP). + if (GETPOST('section')) $file = $upload_dir . "/" . $urlfile; // For a delete of GED module urlfile contains full path from upload_dir + else // For documents pages, upload_dir contains already path to file from module dir, so we clean path into urlfile. + { + $urlfile=basename($urlfile); + $file = $upload_dir . "/" . $urlfile; + } + $linkid = GETPOST('linkid', 'int'); // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP). + if ($urlfile) { - $file = $upload_dir . "/" . $urlfile; // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP). - $ret = dol_delete_file($file, 0, 0, 0, $object); if ($ret) { setEventMessage($langs->trans("FileWasRemoved", $urlfile)); diff --git a/htdocs/core/tpl/login.tpl.php b/htdocs/core/tpl/login.tpl.php index fa3d21b92015a..731084c09260a 100644 --- a/htdocs/core/tpl/login.tpl.php +++ b/htdocs/core/tpl/login.tpl.php @@ -25,7 +25,7 @@ if (GETPOST('dol_no_mouse_hover')) $conf->dol_no_mouse_hover=1; if (GETPOST('dol_use_jmobile')) $conf->dol_use_jmobile=1; -$arrayofjs=array('/core/js/dst.js'); // Javascript code on logon page only to detect user tz, dst_observed, dst_first, dst_second +$arrayofjs=array('/core/js/dst.js'.(empty($conf->dol_use_jmobile)?'':'?version='.urlencode(DOL_VERSION))); // Javascript code on logon page only to detect user tz, dst_observed, dst_first, dst_second $titleofloginpage=$langs->trans('Login').' '.$title; // title is defined by dol_loginfunction in security2.lib.php print top_htmlhead('',$titleofloginpage,0,0,$arrayofjs); ?> @@ -33,12 +33,14 @@ +dol_use_jmobile)) { ?> +
@@ -205,7 +207,38 @@ } ?> + + + + + + +global->MAIN_HTML_FOOTER)) print $conf->global->MAIN_HTML_FOOTER; ?> + +google->enabled) && ! empty($conf->global->MAIN_GOOGLE_AN_ID)) +{ + if (empty($conf->dol_use_jmobile)) + { + print "\n"; + print ''."\n"; + } +} +?> + google->enabled) && ! empty($conf->global->MAIN_GOOGLE_AD_CLIENT) && ! empty($conf->global->MAIN_GOOGLE_AD_SLOT)) { if (empty($conf->dol_use_jmobile)) @@ -228,12 +261,6 @@ } ?> - - - - -global->MAIN_HTML_FOOTER)) print $conf->global->MAIN_HTML_FOOTER; ?> -
diff --git a/htdocs/core/tpl/notes.tpl.php b/htdocs/core/tpl/notes.tpl.php index 1a690dd7950a0..4975f3b0665d2 100644 --- a/htdocs/core/tpl/notes.tpl.php +++ b/htdocs/core/tpl/notes.tpl.php @@ -26,7 +26,7 @@ $moreparam=(isset($moreparam)?$moreparam:''); $value_public=$object->note_public; $value_private=$object->note_private; -if (! empty($conf->global->MAIN_AUTO_TIMESTAMP_IN_NOTES)) +if (! empty($conf->global->MAIN_AUTO_TIMESTAMP_IN_PUBLIC_NOTES)) { $stringtoadd=dol_print_date(dol_now(), 'dayhour').' '.$user->getFullName($langs).' --'; if (GETPOST('action') == 'edit'.$note_public) @@ -35,6 +35,10 @@ if (dol_textishtml($value_public)) $value_public.="
\n"; else $value_public.="\n"; } +} +if (! empty($conf->global->MAIN_AUTO_TIMESTAMP_IN_PRIVATE_NOTES)) +{ + $stringtoadd=dol_print_date(dol_now(), 'dayhour').' '.$user->getFullName($langs).' --'; if (GETPOST('action') == 'edit'.$note_private) { $value_private=dol_concatdesc($value_private, ($value_private?"\n":"")."-- ".$stringtoadd); diff --git a/htdocs/core/tpl/passwordforgotten.tpl.php b/htdocs/core/tpl/passwordforgotten.tpl.php index 428001e7141fc..414c12bb46232 100644 --- a/htdocs/core/tpl/passwordforgotten.tpl.php +++ b/htdocs/core/tpl/passwordforgotten.tpl.php @@ -31,13 +31,14 @@ - +dol_use_jmobile)) { ?> +
diff --git a/htdocs/cron/list.php b/htdocs/cron/list.php index 8d27450eaf8d9..19a0d5cc3b18d 100644 --- a/htdocs/cron/list.php +++ b/htdocs/cron/list.php @@ -182,9 +182,9 @@ print $form->selectarray('status', array('0'=>$langs->trans("No"),'1'=>$langs->trans("Yes")), $status, 1); print ''; print ' '; -print ''; +print ''; print '  '; -print ''; +print ''; print ''; print ''; diff --git a/htdocs/fichinter/list.php b/htdocs/fichinter/list.php index 93142ed2dc3cf..2a037a07563e0 100644 --- a/htdocs/fichinter/list.php +++ b/htdocs/fichinter/list.php @@ -124,7 +124,7 @@ print ' '; print ' '; print ' '; - print ''; + print ''; print "\n"; $companystatic=new Societe($db); diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index a237ef49a5fd0..060d2d51a83c2 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -1378,7 +1378,7 @@ function load_board($user) while ($obj=$this->db->fetch_object($resql)) { $this->nbtodo++; - if ($this->db->jdate($obj->datefin) < ($now - $conf->facture->fournisseur->warning_delay)) $this->nbtodolate++; + if (! empty($obj->datefin) && $this->db->jdate($obj->datefin) < ($now - $conf->facture->fournisseur->warning_delay)) $this->nbtodolate++; } $this->db->free($resql); return 1; diff --git a/htdocs/fourn/commande/liste.php b/htdocs/fourn/commande/liste.php index bc4004e4fc114..d6c4bb9427dde 100644 --- a/htdocs/fourn/commande/liste.php +++ b/htdocs/fourn/commande/liste.php @@ -152,7 +152,7 @@ print ''; print ''; print ''; - print ''; + print ''; print ''; print ''; diff --git a/htdocs/fourn/facture/list.php b/htdocs/fourn/facture/list.php index bc7632350c168..dd8d778d63a8d 100644 --- a/htdocs/fourn/facture/list.php +++ b/htdocs/fourn/facture/list.php @@ -235,7 +235,7 @@ print ''; print ''; print ''; - print ''; + print ''; print ''; print "\n"; diff --git a/htdocs/fourn/facture/paiement.php b/htdocs/fourn/facture/paiement.php index f625cead27cfa..8f3f29098326a 100644 --- a/htdocs/fourn/facture/paiement.php +++ b/htdocs/fourn/facture/paiement.php @@ -463,7 +463,7 @@ print ''; print ''; print ''; - print ''; + print ''; print ''; print "\n"; diff --git a/htdocs/fourn/liste.php b/htdocs/fourn/liste.php index f59e692fb87fc..5ce488939b3b2 100644 --- a/htdocs/fourn/liste.php +++ b/htdocs/fourn/liste.php @@ -183,7 +183,7 @@ print ''; print ''; - print ''; + print ''; $parameters=array(); $formconfirm=$hookmanager->executeHooks('printFieldListOption',$parameters); // Note that $action and $object may have been modified by hook diff --git a/htdocs/fourn/product/liste.php b/htdocs/fourn/product/liste.php index 7806fdab1bd2d..76c34be703413 100644 --- a/htdocs/fourn/product/liste.php +++ b/htdocs/fourn/product/liste.php @@ -200,9 +200,9 @@ print ''; print ''; print ''; - print ''; + print ''; print '  '; - print ''; + print ''; print ''; print ''; print ''; diff --git a/htdocs/holiday/index.php b/htdocs/holiday/index.php index 34443bfaa988d..e7c4b0a3d50c8 100644 --- a/htdocs/holiday/index.php +++ b/htdocs/holiday/index.php @@ -326,7 +326,7 @@ // ACTION print ''; -print ''; +print ''; print ''; print "\n"; diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.asp b/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.asp deleted file mode 100755 index 41eb5b4d5b779..0000000000000 --- a/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.asp +++ /dev/null @@ -1,44 +0,0 @@ -<% -' -' jQuery File Tree ASP (VBS) Connector -' Copyright 2008 Chazzuka -' programmer@chazzuka.com -' http://www.chazzuka.com/ -' -' retrive base directory -dim BaseFileDir:BaseFileDir=Request.Form("dir") -' if blank give default value -if len(BaseFileDir)=0 then BaseFileDir="/userfiles/" - -dim ObjFSO,BaseFile,Html -' resolve the absolute path -BaseFile = Server.MapPath(BaseFileDir)&"\" -' create FSO -Set ObjFSO = Server.CreateObject("Scripting.FileSystemObject") -' if given folder is exists -if ObjFSO.FolderExists(BaseFile) then - dim ObjFolder,ObjSubFolder,ObjFile,i__Name,i__Ext - Html = Html + "
    "&VBCRLF - Set ObjFolder = ObjFSO.GetFolder(BaseFile) - ' LOOP THROUGH SUBFOLDER - For Each ObjSubFolder In ObjFolder.SubFolders - i__Name=ObjSubFolder.name - Html = Html + "
  • "&_ - ""&_ - (i__Name)+"
  • "&VBCRLF - Next - 'LOOP THROUGH FILES - For Each ObjFile In ObjFolder.Files - ' name - i__Name=ObjFile.name - ' extension - i__Ext = LCase(Mid(i__Name, InStrRev(i__Name, ".", -1, 1) + 1)) - Html = Html + "
  • "&_ - ""&_ - (i__name)+"
  • "&VBCRLF - Next - Html = Html + "
"&VBCRLF -end if - -Response.Write Html -%> \ No newline at end of file diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.aspx b/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.aspx deleted file mode 100755 index f8443ae71230a..0000000000000 --- a/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.aspx +++ /dev/null @@ -1,31 +0,0 @@ -<%@ Page Language="C#" AutoEventWireup="true" %> - -<% - // - // jQuery File Tree ASP Connector - // - // Version 1.0 - // - // Copyright (c)2008 Andrew Sweeny - // asweeny@fit.edu - // 24 March 2008 - // - string dir; - if(Request.Form["dir"] == null || Request.Form["dir"].Length <= 0) - dir = "/"; - else - dir = Server.UrlDecode(Request.Form["dir"]); - System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(dir); - Response.Write("
    \n"); - foreach (System.IO.DirectoryInfo di_child in di.GetDirectories()) - Response.Write("\t
  • " + di_child.Name + "
  • \n"); - foreach (System.IO.FileInfo fi in di.GetFiles()) - { - string ext = ""; - if(fi.Extension.Length > 1) - ext = fi.Extension.Substring(1).ToLower(); - - Response.Write("\t
  • " + fi.Name + "
  • \n"); - } - Response.Write("
"); - %> \ No newline at end of file diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.cf b/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.cf deleted file mode 100755 index 815f83b6ed6da..0000000000000 --- a/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.cf +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.jsp b/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.jsp deleted file mode 100755 index 27b3420217490..0000000000000 --- a/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.jsp +++ /dev/null @@ -1,49 +0,0 @@ -<%@ page - import="java.io.File,java.io.FilenameFilter,java.util.Arrays"%> -<% -/** - * jQuery File Tree JSP Connector - * Version 1.0 - * Copyright 2008 Joshua Gould - * 21 April 2008 -*/ - String dir = request.getParameter("dir"); - if (dir == null) { - return; - } - - if (dir.charAt(dir.length()-1) == '\\') { - dir = dir.substring(0, dir.length()-1) + "/"; - } else if (dir.charAt(dir.length()-1) != '/') { - dir += "/"; - } - - dir = java.net.URLDecoder.decode(dir, "UTF-8"); - - if (new File(dir).exists()) { - String[] files = new File(dir).list(new FilenameFilter() { - public boolean accept(File dir, String name) { - return name.charAt(0) != '.'; - } - }); - Arrays.sort(files, String.CASE_INSENSITIVE_ORDER); - out.print("
    "); - // All dirs - for (String file : files) { - if (new File(dir, file).isDirectory()) { - out.print("
  • " - + file + "
  • "); - } - } - // All files - for (String file : files) { - if (!new File(dir, file).isDirectory()) { - int dotIndex = file.lastIndexOf('.'); - String ext = dotIndex > 0 ? file.substring(dotIndex + 1) : ""; - out.print("
  • " - + file + "
  • "); - } - } - out.print("
"); - } -%> \ No newline at end of file diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.php b/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.php deleted file mode 100644 index d983e2f1a442d..0000000000000 --- a/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.php +++ /dev/null @@ -1,43 +0,0 @@ - 2 ) { /* The 2 accounts for . and .. */ - echo "
    "; - // All dirs - foreach( $files as $file ) { - if( file_exists($root . $_POST['dir'] . $file) && $file != '.' && $file != '..' && is_dir($root . $_POST['dir'] . $file) ) { - echo "
  • " . htmlentities($file) . "
  • "; - } - } - // All files - foreach( $files as $file ) { - if( file_exists($root . $_POST['dir'] . $file) && $file != '.' && $file != '..' && !is_dir($root . $_POST['dir'] . $file) ) { - $ext = preg_replace('/^.*\./', '', $file); - echo "
  • " . htmlentities($file) . "
  • "; - } - } - echo "
"; - } -} - -?> \ No newline at end of file diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.pl b/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.pl deleted file mode 100755 index 200701695b790..0000000000000 --- a/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.pl +++ /dev/null @@ -1,102 +0,0 @@ -#!/usr/bin/perl -use strict; -use HTML::Entities (); - -#----------------------------------------------------------- -# jQuery File Tree Perl Connector -# -# Version 1.0 -# -# Oleg Burlaca -# http://www.burlaca.com/2009/02/jquery-file-tree-connector/ -# 12 February 2009 -#----------------------------------------------------------- - -# for security reasons, specify a root folder -# to prevent the whole filesystem to be shown -# for ex: the root folder of your webbrowser - -my $root = "/var/www/html/"; - -#---------------------------------------------------------- - -my $params = &getCGIParams(); -print "Content-type: text/html\n\n"; - -my $dir = $params->{dir}; -my $fullDir = $root . $dir; - -exit if ! -e $fullDir; - -opendir(BIN, $fullDir) or die "Can't open $dir: $!"; -my (@folders, @files); -my $total = 0; -while( defined (my $file = readdir BIN) ) { - next if $file eq '.' or $file eq '..'; - $total++; - if (-d "$fullDir/$file") { - push (@folders, $file); - } else { - push (@files, $file); - } -} -closedir(BIN); - -return if $total == 0; -print "\n"; - - - - -#-------------------------------------------------------------------------------------------------- -sub getCGIParams { - my $line; - - if ($ENV{'REQUEST_METHOD'} eq "POST") { - read(STDIN, $line, $ENV{'CONTENT_LENGTH'}); - } else { - $line = $ENV{'QUERY_STRING'}; - } - - my (@pairs) = split(/&/, $line); - my ($name, $value, %F); - - foreach (@pairs) { - ($name, $value) = split(/=/); - $value =~ tr/+/ /; - $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; - - if (! exists $F{$name}) { - $F{$name} = $value; - } elsif (exists $F{$name} and ref($F{$name}) ne 'ARRAY') { - my $prev_value = $F{$name}; - delete $F{$name}; - $F{$name} = [ $prev_value, $value ]; - } else { push @{ $F{$name} }, $value } - } - return \%F; -} -#-------------------------------------------------------------------------------------------------- - \ No newline at end of file diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.py b/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.py deleted file mode 100755 index 6b63c06419fa2..0000000000000 --- a/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.py +++ /dev/null @@ -1,25 +0,0 @@ -# -# jQuery File Tree -# Python/Django connector script -# By Martin Skou -# -import os -import urllib - -def dirlist(request): - r=['') - return HttpResponse(''.join(r)) \ No newline at end of file diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.rb b/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.rb deleted file mode 100755 index b30b8a976a2ff..0000000000000 --- a/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree.rb +++ /dev/null @@ -1,61 +0,0 @@ -# -# jQuery File Tree Ruby Connector -# -# Version 1.01 -# -# Erik Lax -# http://datahack.se -# 13 July 2008 -# -# History -# -# 1.01 Initial Release -# -# Output a list of files for jQuery File Tree -# - -# -#root = "/absolute/path/" -# or -root = File.expand_path(".") -# - -# -require "cgi" -cgi = CGI.new -cgi.header("type" => "text/html") -dir = cgi.params["dir"].to_s - -puts "
    " -begin - path = root + "/" + dir - - # chdir() to user requested dir (root + "/" + dir) - Dir.chdir(File.expand_path(path).untaint); - - # check that our base path still begins with root path - if Dir.pwd[0,root.length] == root then - - #loop through all directories - Dir.glob("*") { - |x| - if not File.directory?(x.untaint) then next end - puts "
  • #{x}
  • "; - } - - #loop through all files - Dir.glob("*") { - |x| - if not File.file?(x.untaint) then next end - ext = File.extname(x)[1..-1] - puts "
  • #{x}
  • " - } - else - #only happens when someone tries to go outside your root directory... - puts "You are way out of your league" - end -rescue - puts "Internal Error" -end -puts "
" -#
diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree_huck.lasso b/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree_huck.lasso deleted file mode 100755 index 3359e29314f1f..0000000000000 --- a/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree_huck.lasso +++ /dev/null @@ -1,36 +0,0 @@ -[ - // - // jQuery File Tree Lasso Connector - // - // Version 1.00 - // - // Jason Huck - // http://devblog.jasonhuck.com/ - // 1 May 2008 - // - // History: - // - // 1.00 - released (1 May 2008) - // - // Output a list of files for jQuery File Tree - // - - !action_param('dir') ? abort; - var('dir') = action_param('dir'); - var('files') = file_listdirectory($dir); - - ''; -] diff --git a/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree_sabourdin.lasso b/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree_sabourdin.lasso deleted file mode 100755 index 077258e2583aa..0000000000000 --- a/htdocs/includes/jquery/plugins/jqueryFileTree/connectors/jqueryFileTree_sabourdin.lasso +++ /dev/null @@ -1,48 +0,0 @@ -(Sort); - if:( $files->(Size) > 0 ); - output:''; - /if; -/if; - -/Encode_set; -?> \ No newline at end of file diff --git a/htdocs/install/upgrade.php b/htdocs/install/upgrade.php index 904144cad66c4..de0a8fe28a1b1 100644 --- a/htdocs/install/upgrade.php +++ b/htdocs/install/upgrade.php @@ -15,6 +15,14 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see . + * + * Upgrade scripts can be ran from command line with syntax: + * + * cd htdocs/install + * php upgrade.php 3.4.0 3.5.0 + * php upgrade2.php 3.4.0 3.5.0 + * + * Return code is 0 if OK, >0 if error */ /** @@ -260,6 +268,7 @@ } } + /* * Remove deprecated indexes and constraints for Mysql */ @@ -343,12 +352,12 @@ { while (($file = readdir($handle))!==false) { - if (preg_match('/\.sql$/i',$file)) $filesindir[]=$file; + if (preg_match('/\.sql$/i',$file)) $filesindir[]=$file; } sort($filesindir); } else - { + { print '
'.$langs->trans("ErrorCanNotReadDir",$dir).'
'; } @@ -365,47 +374,54 @@ } } - // Loop on each migrate files - foreach($filelist as $file) + if (count($filelist) == 0) { - print '
'; - print ''.$langs->trans("ChoosedMigrateScript").''.$file.''."\n"; - - // Run sql script - $ok=run_sql($dir.$file, 0, '', 1); - - // Scan if there is migration scripts for modules htdocs/module/sql or htdocs/custom/module/sql - $modulesfile = array(); - foreach ($conf->file->dol_document_root as $type => $dirroot) - { - $handlemodule=@opendir($dirroot); // $dirroot may be '..' - if (is_resource($handlemodule)) - { - while (($filemodule = readdir($handlemodule))!==false) - { - if (! preg_match('/\./',$filemodule) && is_dir($dirroot.'/'.$filemodule.'/sql')) // We exclude filemodule that contains . (are not directories) and are not directories. - { - //print "Scan for ".$dirroot . '/' . $filemodule . '/sql/'.$file; - if (is_file($dirroot . '/' . $filemodule . '/sql/'.$file)) - { - $modulesfile[$dirroot . '/' . $filemodule . '/sql/'.$file] = '/' . $filemodule . '/sql/'.$file; - } - } - } - closedir($handlemodule); - } - } - - foreach ($modulesfile as $modulefilelong => $modulefileshort) - { - print '
'; - print ''.$langs->trans("ChoosedMigrateScript").' (external modules)'.$modulefileshort.''."\n"; + print '
'.$langs->trans("ErrorNoMigrationFilesFoundForParameters").'
'; + } + else + { + // Loop on each migrate files + foreach($filelist as $file) + { + print '
'; + print ''.$langs->trans("ChoosedMigrateScript").''.$file.''."\n"; // Run sql script - $okmodule=run_sql($modulefilelong, 0, '', 1); // Note: Result of migration of external module should not decide if we continue migration of Dolibarr or not. - } - - } + $ok=run_sql($dir.$file, 0, '', 1); + + // Scan if there is migration scripts for modules htdocs/module/sql or htdocs/custom/module/sql + $modulesfile = array(); + foreach ($conf->file->dol_document_root as $type => $dirroot) + { + $handlemodule=@opendir($dirroot); // $dirroot may be '..' + if (is_resource($handlemodule)) + { + while (($filemodule = readdir($handlemodule))!==false) + { + if (! preg_match('/\./',$filemodule) && is_dir($dirroot.'/'.$filemodule.'/sql')) // We exclude filemodule that contains . (are not directories) and are not directories. + { + //print "Scan for ".$dirroot . '/' . $filemodule . '/sql/'.$file; + if (is_file($dirroot . '/' . $filemodule . '/sql/'.$file)) + { + $modulesfile[$dirroot . '/' . $filemodule . '/sql/'.$file] = '/' . $filemodule . '/sql/'.$file; + } + } + } + closedir($handlemodule); + } + } + + foreach ($modulesfile as $modulefilelong => $modulefileshort) + { + print '
'; + print ''.$langs->trans("ChoosedMigrateScript").' (external modules)'.$modulefileshort.''."\n"; + + // Run sql script + $okmodule=run_sql($modulefilelong, 0, '', 1); // Note: Result of migration of external module should not decide if we continue migration of Dolibarr or not. + } + + } + } } print ''; @@ -413,7 +429,6 @@ if ($db->connected) $db->close(); } - if (empty($actiondone)) { print '
'.$langs->trans("ErrorWrongParameters").'
'; @@ -429,4 +444,4 @@ // Return code if ran from command line if ($ret) exit($ret); -?> \ No newline at end of file +?> diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php index 78c223a98072b..593ae33ebcc22 100644 --- a/htdocs/install/upgrade2.php +++ b/htdocs/install/upgrade2.php @@ -16,6 +16,14 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see . + * + * Upgrade scripts can be ran from command line with syntax: + * + * cd htdocs/install + * php upgrade.php 3.4.0 3.5.0 + * php upgrade2.php 3.4.0 3.5.0 + * + * Return code is 0 if OK, >0 if error */ /** diff --git a/htdocs/langs/en_US/banks.lang b/htdocs/langs/en_US/banks.lang index e4de38e621e43..88ac8d90d5ee1 100644 --- a/htdocs/langs/en_US/banks.lang +++ b/htdocs/langs/en_US/banks.lang @@ -28,6 +28,7 @@ EndBankBalance=End balance CurrentBalance=Current balance FutureBalance=Future balance ShowAllTimeBalance=Show balance from start +AllTime=From start Reconciliation=Reconciliation RIB=Bank Account Number IBAN=IBAN number diff --git a/htdocs/langs/en_US/boxes.lang b/htdocs/langs/en_US/boxes.lang index aceee7db3a0c1..e7e9da7dc1b80 100644 --- a/htdocs/langs/en_US/boxes.lang +++ b/htdocs/langs/en_US/boxes.lang @@ -18,7 +18,7 @@ BoxLastContracts=Last contracts BoxLastContacts=Last contacts/addresses BoxLastMembers=Last members BoxFicheInter=Last interventions -BoxCurrentAccounts=Current accounts balance +BoxCurrentAccounts=Opened accounts balance BoxSalesTurnover=Sales turnover BoxTotalUnpaidCustomerBills=Total unpaid customer's invoices BoxTotalUnpaidSuppliersBills=Total unpaid supplier's invoices @@ -43,7 +43,7 @@ BoxTitleLastModifiedMembers=Last %s modified members BoxTitleLastFicheInter=Last %s modified intervention BoxTitleOldestUnpaidCustomerBills=Oldest %s unpaid customer's invoices BoxTitleOldestUnpaidSupplierBills=Oldest %s unpaid supplier's invoices -BoxTitleCurrentAccounts=Current account's balances +BoxTitleCurrentAccounts=Opened account's balances BoxTitleSalesTurnover=Sales turnover BoxTitleTotalUnpaidCustomerBills=Unpaid customer's invoices BoxTitleTotalUnpaidSuppliersBills=Unpaid supplier's invoices diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index 4465b660cf6ce..d889dedc9d654 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -666,6 +666,8 @@ SaveUploadedFileWithMask=Save file on server with name "%s" (ot OriginFileName=Original filename SetDemandReason=Set source ViewPrivateNote=View notes +XMoreLines=%s line(s) hidden + # Week day Monday=Monday Tuesday=Tuesday diff --git a/htdocs/langs/fr_FR/boxes.lang b/htdocs/langs/fr_FR/boxes.lang index 314faf964bc13..bef2dea85fea7 100644 --- a/htdocs/langs/fr_FR/boxes.lang +++ b/htdocs/langs/fr_FR/boxes.lang @@ -18,7 +18,7 @@ BoxLastContracts=Derniers contrats BoxLastContacts=Derniers contacts/adresses BoxLastMembers=Derniers adhérents modifiés BoxFicheInter=Dernières fiches d'intervention modifiées -BoxCurrentAccounts=Soldes des comptes courants +BoxCurrentAccounts=Soldes des comptes ouverts BoxSalesTurnover=Chiffre d'affaires BoxTotalUnpaidCustomerBills=Total des factures clients impayées BoxTotalUnpaidSuppliersBills=Total des factures fournisseurs impayées @@ -43,7 +43,7 @@ BoxTitleLastModifiedMembers=Les %s derniers adhérents modifiés BoxTitleLastFicheInter=Les %s dernières fiches d'intervention modifiées BoxTitleOldestUnpaidCustomerBills=Les %s plus anciennes factures clients impayées BoxTitleOldestUnpaidSupplierBills=Les %s plus anciennes factures fournisseurs impayées -BoxTitleCurrentAccounts=Les soldes des comptes courants +BoxTitleCurrentAccounts=Les soldes des comptes ouverts BoxTitleSalesTurnover=Le chiffre d'affaires réalisé BoxTitleTotalUnpaidCustomerBills=Impayés clients BoxTitleTotalUnpaidSuppliersBills=Impayés fournisseurs diff --git a/htdocs/langs/fr_FR/main.lang b/htdocs/langs/fr_FR/main.lang index de40bc94593e4..f0b01bef578f2 100644 --- a/htdocs/langs/fr_FR/main.lang +++ b/htdocs/langs/fr_FR/main.lang @@ -666,6 +666,7 @@ SaveUploadedFileWithMask=Sauver le fichier sur le serveur sous le nom "% OriginFileName=nom du fichier source SetDemandReason=Définir l'origine ViewPrivateNote=Voir notes +XMoreLines=%s ligne(s) non affichée(s) # Week day Monday=Lundi diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 69265f73b675d..60564d383c732 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -972,41 +972,44 @@ function top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs else print "".dol_htmlentities($appli).""; print "\n"; + $ext=''; + if (! empty($conf->dol_use_jmobile)) $ext='version='.urlencode(DOL_VERSION); + if (! defined('DISABLE_JQUERY') && ! $disablejs && $conf->use_javascript_ajax) { print ''."\n"; $jquerytheme = 'smoothness'; if (!empty($conf->global->MAIN_USE_JQUERY_THEME)) $jquerytheme = $conf->global->MAIN_USE_JQUERY_THEME; - if (constant('JS_JQUERY_UI')) print ''."\n"; // JQuery - else print ''."\n"; // JQuery - print ''."\n"; // Tooltip - print ''."\n"; // JNotify + if (constant('JS_JQUERY_UI')) print ''."\n"; // JQuery + else print ''."\n"; // JQuery + print ''."\n"; // Tooltip + print ''."\n"; // JNotify /*if (! empty($conf->global->MAIN_USE_JQUERY_FILEUPLOAD) || (defined('REQUIRE_JQUERY_FILEUPLOAD') && constant('REQUIRE_JQUERY_FILEUPLOAD'))) // jQuery fileupload { - print ''."\n"; + print ''."\n"; }*/ if (! empty($conf->global->MAIN_USE_JQUERY_DATATABLES) || (defined('REQUIRE_JQUERY_DATATABLES') && constant('REQUIRE_JQUERY_DATATABLES'))) // jQuery datatables { - //print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; - //print ''."\n"; - print ''."\n"; + //print ''."\n"; + print ''."\n"; + print ''."\n"; + print ''."\n"; + //print ''."\n"; + print ''."\n"; } if (! empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) || (defined('REQUIRE_JQUERY_MULTISELECT') && constant('REQUIRE_JQUERY_MULTISELECT'))) // jQuery multiselect { - print ''."\n"; + print ''."\n"; } // jQuery Timepicker if (! empty($conf->global->MAIN_USE_JQUERY_TIMEPICKER) || defined('REQUIRE_JQUERY_TIMEPICKER')) { - print ''."\n"; + print ''."\n"; } // jQuery jMobile if (! empty($conf->global->MAIN_USE_JQUERY_JMOBILE) || defined('REQUIRE_JQUERY_JMOBILE') || ! empty($conf->dol_use_jmobile)) { - print ''."\n"; + print ''."\n"; } } @@ -1029,6 +1032,7 @@ function top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs } } $themeparam='?lang='.$langs->defaultlang.'&theme='.$conf->theme.(GETPOST('optioncss')?'&optioncss='.GETPOST('optioncss','alpha',1):'').'&userid='.$user->id.'&entity='.$conf->entity; + $themeparam.=($ext?'&'.$ext:''); if (! empty($_SESSION['dol_resetcache'])) $themeparam.='&dol_resetcache='.$_SESSION['dol_resetcache']; if (GETPOST('dol_hide_topmenu')) { $themeparam.='&dol_hide_topmenu='.GETPOST('dol_hide_topmenu'); } if (GETPOST('dol_hide_leftmenu')) { $themeparam.='&dol_hide_leftmenu='.GETPOST('dol_hide_leftmenu'); } @@ -1068,63 +1072,61 @@ function top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs } } - $ext='.js'; - // Output standard javascript links if (! defined('DISABLE_JQUERY') && ! $disablejs && ! empty($conf->use_javascript_ajax)) { // JQuery. Must be before other includes print ''."\n"; - if (constant('JS_JQUERY')) print ''."\n"; - else print ''."\n"; - if (constant('JS_JQUERY_UI')) print ''."\n"; - else print ''."\n"; - print ''."\n"; - print ''."\n"; + if (constant('JS_JQUERY')) print ''."\n"; + else print ''."\n"; + if (constant('JS_JQUERY_UI')) print ''."\n"; + else print ''."\n"; + print ''."\n"; + print ''."\n"; // jQuery Layout if (! empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT) || defined('REQUIRE_JQUERY_LAYOUT')) { - print ''."\n"; + print ''."\n"; } // jQuery jnotify if (empty($conf->global->MAIN_DISABLE_JQUERY_JNOTIFY) && ! defined('DISABLE_JQUERY_JNOTIFY')) { - print ''."\n"; - print ''."\n"; + print ''."\n"; + print ''."\n"; } // jQuery blockUI if (! empty($conf->global->MAIN_USE_JQUERY_BLOCKUI) || defined('REQUIRE_JQUERY_BLOCKUI')) { - print ''."\n"; + print ''."\n"; print ''."\n"; - print ''."\n"; + print ''."\n"; } // Flot if (empty($conf->global->MAIN_DISABLE_JQUERY_FLOT)) { if (constant('JS_JQUERY_FLOT')) { - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; + print ''."\n"; + print ''."\n"; + print ''."\n"; + print ''."\n"; } else { - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; + print ''."\n"; + print ''."\n"; + print ''."\n"; + print ''."\n"; } } // jQuery jeditable if (! empty($conf->global->MAIN_USE_JQUERY_JEDITABLE)) { - print ''."\n"; - print ''."\n"; - print ''."\n"; + print ''."\n"; + print ''."\n"; + print ''."\n"; print ''."\n"; - print ''."\n"; - print ''."\n"; + print ''."\n"; + print ''."\n"; } // jQuery File Upload /* if (! empty($conf->global->MAIN_USE_JQUERY_FILEUPLOAD) || (defined('REQUIRE_JQUERY_FILEUPLOAD') && constant('REQUIRE_JQUERY_FILEUPLOAD'))) { - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; + print ''."\n"; + print ''."\n"; + print ''."\n"; + print ''."\n"; + print ''."\n"; + print ''."\n"; print ''."\n"; - print ''."\n"; + print ''."\n"; }*/ // jQuery DataTables if (! empty($conf->global->MAIN_USE_JQUERY_DATATABLES) || (defined('REQUIRE_JQUERY_DATATABLES') && constant('REQUIRE_JQUERY_DATATABLES'))) { - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; + print ''."\n"; + print ''."\n"; + print ''."\n"; + print ''."\n"; } // jQuery Multiselect if (! empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) || (defined('REQUIRE_JQUERY_MULTISELECT') && constant('REQUIRE_JQUERY_MULTISELECT'))) { - print ''."\n"; + print ''."\n"; } // jQuery Timepicker if (! empty($conf->global->MAIN_USE_JQUERY_TIMEPICKER) || defined('REQUIRE_JQUERY_TIMEPICKER')) { - print ''."\n"; - print ''."\n"; + print ''."\n"; + print ''."\n"; } // jQuery jMobile if (! empty($conf->global->MAIN_USE_JQUERY_JMOBILE) || defined('REQUIRE_JQUERY_JMOBILE') || (! empty($conf->dol_use_jmobile) && $conf->dol_use_jmobile > 0)) @@ -1189,7 +1191,7 @@ function top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs }); '; } - if (empty($conf->dol_use_jmobile) || $conf->dol_use_jmobile != 3) print ''."\n"; + if (empty($conf->dol_use_jmobile) || $conf->dol_use_jmobile != 3) print ''."\n"; } } @@ -1207,15 +1209,15 @@ function top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs print 'var ckeditorFilebrowserBrowseUrl = \''.DOL_URL_ROOT.'/core/filemanagerdol/browser/default/browser.php?Connector='.DOL_URL_ROOT.'/core/filemanagerdol/connectors/php/connector.php\';'."\n"; print 'var ckeditorFilebrowserImageBrowseUrl = \''.DOL_URL_ROOT.'/core/filemanagerdol/browser/default/browser.php?Type=Image&Connector='.DOL_URL_ROOT.'/core/filemanagerdol/connectors/php/connector.php\';'."\n"; print ''."\n"; - print ''."\n"; + print ''."\n"; } // Global js function print ''."\n"; - print ''."\n"; + print ''."\n"; // Add datepicker default options - print ''."\n"; + print ''."\n"; // JS forced by modules (relative url starting with /) if (! empty($conf->modules_parts['js'])) // $conf->modules_parts['js'] is array('module'=>array('file1','file2')) @@ -1423,11 +1425,20 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a if (! empty($_SESSION["disablemodules"])) $loginhtmltext.='
'.$langs->trans("DisabledModules").':
'.join(', ',explode(',',$_SESSION["disablemodules"])); $appli='Dolibarr'; - if (! empty($conf->global->MAIN_APPLICATION_TITLE)) $appli=$conf->global->MAIN_APPLICATION_TITLE; + if (! empty($conf->global->MAIN_APPLICATION_TITLE)) + { + $appli=$conf->global->MAIN_APPLICATION_TITLE; + if (preg_match('/\d\.\d/', $appli)) + { + if (! preg_match('/'.preg_quote(DOL_VERSION).'/', $appli)) $appli.=" (".DOL_VERSION.")"; // If new title contains a version that is different than core + } + else $appli.=" ".DOL_VERSION; + } + else $appli.=" ".DOL_VERSION; // Link info $logouttext=''; - $logouthtmltext=$appli.' '.DOL_VERSION.'
'; + $logouthtmltext=$appli.'
'; $logouthtmltext.=$langs->trans("Logout").'
'; //$logouthtmltext.="
"; if ($_SESSION["dol_authmode"] != 'forceuser' && $_SESSION["dol_authmode"] != 'http') @@ -1621,10 +1632,16 @@ function left_menu($menu_array_before, $helppagename='', $moresearchform='', $me if (preg_match('/es/i',$langs->defaultlang)) $doliurl='http://www.dolibarr.es'; $appli='Dolibarr'; - if (! empty($conf->global->MAIN_APPLICATION_TITLE)) { + if (! empty($conf->global->MAIN_APPLICATION_TITLE)) + { $appli=$conf->global->MAIN_APPLICATION_TITLE; $doliurl=''; + if (preg_match('/\d\.\d/', $appli)) + { + if (! preg_match('/'.preg_quote(DOL_VERSION).'/', $appli)) $appli.=" (".DOL_VERSION.")"; // If new title contains a version that is different than core + } + else $appli.=" ".DOL_VERSION; } - $appli.=" ".DOL_VERSION; + else $appli.=" ".DOL_VERSION; print '
'; if ($doliurl) print ''; print $appli; diff --git a/htdocs/product/liste.php b/htdocs/product/liste.php index e9fe0b60a03af..283305860705d 100644 --- a/htdocs/product/liste.php +++ b/htdocs/product/liste.php @@ -370,8 +370,8 @@ print ''; print ''; - print ''; - print ''; + print ''; + print ''; print ''; print ''; diff --git a/htdocs/product/reassort.php b/htdocs/product/reassort.php index 00793b2ff8a9c..fcbcd780fb6eb 100644 --- a/htdocs/product/reassort.php +++ b/htdocs/product/reassort.php @@ -274,8 +274,8 @@ print ' '; print ' '; print ''; - print ''; - print ''; + print ''; + print ''; print ''; print ''; diff --git a/htdocs/product/stock/mouvement.php b/htdocs/product/stock/mouvement.php index eb9391c869825..f8135b69566e3 100644 --- a/htdocs/product/stock/mouvement.php +++ b/htdocs/product/stock/mouvement.php @@ -452,9 +452,9 @@ print ''; print ''; print ''; - print ''; + print ''; print '  '; - print ''; + print ''; print ''; print "\n"; print ''; diff --git a/htdocs/product/stock/replenish.php b/htdocs/product/stock/replenish.php index 788bd8fee092a..887a23ac0bc40 100644 --- a/htdocs/product/stock/replenish.php +++ b/htdocs/product/stock/replenish.php @@ -176,7 +176,7 @@ $sql.= ' p.price_ttc, p.price_base_type,p.fk_product_type,'; $sql.= ' p.tms as datem, p.duration, p.tobuy, p.seuil_stock_alerte,'; $sql.= ' p.desiredstock,'; -$sql.= ' SUM('.$db->ifsql("s.reel IS NULL", "s.reel", "0").') as stock_physique'; +$sql.= ' SUM('.$db->ifsql("s.reel IS NULL", "0", "s.reel").') as stock_physique'; $sql.= ' FROM ' . MAIN_DB_PREFIX . 'product as p'; $sql.= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'product_stock as s'; $sql.= ' ON p.rowid = s.fk_product'; @@ -219,7 +219,7 @@ $sql.= ' AND p.desiredstock > 0'; if ($salert == 'on') // Option to see when stock is lower than alert { - $sql .= ' AND SUM('.$db->ifsql("s.reel IS NULL", "s.reel", "0").') < p.seuil_stock_alerte AND p.seuil_stock_alerte is not NULL'; + $sql .= ' AND SUM('.$db->ifsql("s.reel IS NULL", "0", "s.reel").') < p.seuil_stock_alerte AND p.seuil_stock_alerte is not NULL'; $alertchecked = 'checked="checked"'; } $sql.= $db->order($sortfield,$sortorder); @@ -412,10 +412,8 @@ ' '. ' '. ''. - ''. - ''. + ''. + ''. ''. ''; @@ -611,4 +609,4 @@ function toggle(source) llxFooter(); $db->close(); -?> \ No newline at end of file +?> diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php index 5abf23e6df3d1..7b21cbf57d0ba 100644 --- a/htdocs/projet/class/task.class.php +++ b/htdocs/projet/class/task.class.php @@ -27,7 +27,6 @@ /** * Class to manage tasks - * Initialy built by build_class_from_table on 2008-09-10 12:41 */ class Task extends CommonObject { diff --git a/htdocs/projet/liste.php b/htdocs/projet/liste.php index a81a21c6c9b4a..974f7f5ef00ab 100644 --- a/htdocs/projet/liste.php +++ b/htdocs/projet/liste.php @@ -142,7 +142,7 @@ print ''; print ''; print ' '; - print ''; + print ''; print "\n"; while ($i < $num) diff --git a/htdocs/projet/tasks/index.php b/htdocs/projet/tasks/index.php index 8795cf98486dc..8c626175d3dd5 100644 --- a/htdocs/projet/tasks/index.php +++ b/htdocs/projet/tasks/index.php @@ -116,7 +116,7 @@ print ''; print ' '; print ''; -print ''; +print ''; print "\n"; // Show all lines in taskarray (recursive function to go down on tree) diff --git a/htdocs/societe/consumption.php b/htdocs/societe/consumption.php index 301629dd17a1a..f29c290548f7b 100644 --- a/htdocs/societe/consumption.php +++ b/htdocs/societe/consumption.php @@ -270,8 +270,8 @@ print ''; print ''; print ''; -print ''; -print ''; +print ''; +print ''; print ''; print ''; diff --git a/htdocs/societe/societe.php b/htdocs/societe/societe.php index bf21bfecfa7ae..7d3e2e1a78d43 100644 --- a/htdocs/societe/societe.php +++ b/htdocs/societe/societe.php @@ -389,9 +389,9 @@ print ''; // Status print ''; - print ''; + print ''; print '  '; - print ''; + print ''; print ''; print "\n"; diff --git a/htdocs/theme/amarok/img/favicon.ico b/htdocs/theme/amarok/img/favicon.ico index 7d41c54d5bb98..b93a86747d647 100644 Binary files a/htdocs/theme/amarok/img/favicon.ico and b/htdocs/theme/amarok/img/favicon.ico differ diff --git a/htdocs/theme/auguria/img/favicon.ico b/htdocs/theme/auguria/img/favicon.ico new file mode 100644 index 0000000000000..b93a86747d647 Binary files /dev/null and b/htdocs/theme/auguria/img/favicon.ico differ diff --git a/htdocs/theme/bureau2crea/img/favicon.ico b/htdocs/theme/bureau2crea/img/favicon.ico index e0b4481f81e78..b93a86747d647 100644 Binary files a/htdocs/theme/bureau2crea/img/favicon.ico and b/htdocs/theme/bureau2crea/img/favicon.ico differ diff --git a/htdocs/theme/cameleo/img/favicon.ico b/htdocs/theme/cameleo/img/favicon.ico index 7d41c54d5bb98..b93a86747d647 100644 Binary files a/htdocs/theme/cameleo/img/favicon.ico and b/htdocs/theme/cameleo/img/favicon.ico differ diff --git a/htdocs/theme/cameleo/style.css.php b/htdocs/theme/cameleo/style.css.php index cffd00d26b28f..34ceb37b0375b 100644 --- a/htdocs/theme/cameleo/style.css.php +++ b/htdocs/theme/cameleo/style.css.php @@ -971,7 +971,6 @@ /* ============================================================================== */ .toolbar { - background-image: url(theme.'/img/tmenu2.png',1); ?>) !important; background-repeat: repeat-x !important; border: 1px solid #BBB !important; } diff --git a/htdocs/theme/eldy/img/favicon.ico b/htdocs/theme/eldy/img/favicon.ico index 7d41c54d5bb98..b93a86747d647 100644 Binary files a/htdocs/theme/eldy/img/favicon.ico and b/htdocs/theme/eldy/img/favicon.ico differ diff --git a/htdocs/theme/eldy/thumb.png b/htdocs/theme/eldy/thumb.png index 208299ad19764..e17e091214736 100644 Binary files a/htdocs/theme/eldy/thumb.png and b/htdocs/theme/eldy/thumb.png differ diff --git a/htdocs/user/index.php b/htdocs/user/index.php index 62ead1935eb35..baa704509cc76 100644 --- a/htdocs/user/index.php +++ b/htdocs/user/index.php @@ -126,7 +126,7 @@ print ''; print ''; - print ''; + print ''; print ''; print "\n"; diff --git a/scripts/emailings/mailing-send.php b/scripts/emailings/mailing-send.php index c6fffdcc59f9e..4742cf59b1839 100755 --- a/scripts/emailings/mailing-send.php +++ b/scripts/emailings/mailing-send.php @@ -145,19 +145,25 @@ $other4=$other[3]; $other5=$other[4]; $substitutionarray=array( - '__ID__' => $obj->source_id, - '__EMAIL__' => $obj->email, - '__CHECK_READ__' => '', - '__UNSUBSCRIBE__' => ''.$langs->trans("MailUnsubcribe").'', - '__MAILTOEMAIL__' => ''.$obj2->email.'', - '__LASTNAME__' => $obj2->lastname, - '__FIRSTNAME__' => $obj2->firstname, - '__OTHER1__' => $other1, - '__OTHER2__' => $other2, - '__OTHER3__' => $other3, - '__OTHER4__' => $other4, - '__OTHER5__' => $other5 + '__ID__' => $obj->source_id, + '__EMAIL__' => $obj->email, + '__CHECK_READ__' => '', + '__UNSUBSCRIBE__' => ''.$langs->trans("MailUnsubcribe").'', + '__MAILTOEMAIL__' => ''.$obj2->email.'', + '__LASTNAME__' => $obj2->lastname, + '__FIRSTNAME__' => $obj2->firstname, + '__OTHER1__' => $other1, + '__OTHER2__' => $other2, + '__OTHER3__' => $other3, + '__OTHER4__' => $other4, + '__OTHER5__' => $other5 ); + if (! empty($conf->paypal->enabled) && ! empty($conf->global->PAYPAL_SECURITY_TOKEN)) + { + $substitutionarray['__SECUREKEYPAYPAL__']=dol_hash($conf->global->PAYPAL_SECURITY_TOKEN, 2); + if (empty($conf->global->PAYPAL_SECURITY_TOKEN_UNIQUE)) $substitutionarray['__SECUREKEYPAYPAL_MEMBER__']=dol_hash($conf->global->PAYPAL_SECURITY_TOKEN, 2); + else $substitutionarray['__SECUREKEYPAYPAL_MEMBER__']=dol_hash($conf->global->PAYPAL_SECURITY_TOKEN . 'membersubscription' . $obj->source_id, 2); + } complete_substitutions_array($substitutionarray,$langs); $newsubject=make_substitutions($subject,$substitutionarray);