From a2c820854106c2cb4e644b64ef393e0566a56a9b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 27 Dec 2015 19:17:05 +0100 Subject: [PATCH 01/12] Prepare 3.6.5 --- ChangeLog | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ChangeLog b/ChangeLog index bd64723725a..fe638ab3902 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,17 @@ English Dolibarr ChangeLog -------------------------------------------------------------- +***** ChangeLog for 3.6.6 compared to 3.6.5 ***** +FIX: #3734 Do not show empty links of deleted source objects in stock movement list +FIX: #4081 Added missing translation +FIX: #4097 Public holiday calculation +FIX: #4242 Allow disabling dashes in documents +FIX: #4243 sql injection +FIX: Add a protection to not make release if ChangeLog was not generated. Prepare package 3.6.5 +FIX: export with category contact extrafields +FIX: Not delete a product when have customer price +FIX: Not deleting contrats on element_element table + ***** ChangeLog for 3.6.5 compared to 3.6.4 ***** FIX: #2957 : missing $langs object for trigger FIX: #2983 Load gravatar avatar images securely over HTTPS From f13df0f952c286fbf3c9a5164930c9397acde26d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 27 Dec 2015 20:17:46 +0100 Subject: [PATCH 02/12] Prepare 3.7.3 --- ChangeLog | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/ChangeLog b/ChangeLog index 20bdb77b390..a05b04de265 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,6 +9,25 @@ Upgrading to any other version or database system is abolutely required BEFORE t make a Dolibarr upgrade. +***** ChangeLog for 3.7.3 compared to 3.7.2 ***** +FIX: #3734 Do not show empty links of deleted source objects in stock movement list +FIX: #3890 Expected transactions bank account page, shows negative numbers +FIX: #3928 Creating a Customer order and a Customer invoice from a project, does not inherit payment conditions and method of payment of customer card +FIX: #3980 Search field in "product by supplier" list sends empty result 3.8 and 3.7 +FIX: #4081 Added missing translation +FIX: #4097 Public holiday calculation +FIX: #4242 Allow disabling dashes in documents +FIX: #4243 sql injection +FIX: Can use formated float number on old expense report module. +FIX: Change object statut when closing shipment and remove erratic db commit +FIX: Export with category contact extrafields +FIX: NB task and percent progress in box project +FIX: Not delete a product when have customer price +FIX: Not deleting contrats on element_element table +FIX: Not use localtaxes when invoice some orders +FIX: Product link in project box +FIX: Use "WHERE true" instead of "WHERE 1" #4132 + ***** ChangeLog for 3.7.2 compared to 3.7.1 ***** FIX: #2957 : missing $langs object for trigger FIX: #2983 Load gravatar avatar images securely over HTTPS From 69058427944742700efd4a3e9601f433411f2e5f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 27 Dec 2015 20:31:39 +0100 Subject: [PATCH 03/12] Update list of module in demo with new 3.8 modules --- htdocs/public/demo/index.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/public/demo/index.php b/htdocs/public/demo/index.php index 4b0c0526174..b62d2934e35 100644 --- a/htdocs/public/demo/index.php +++ b/htdocs/public/demo/index.php @@ -61,10 +61,10 @@ if (empty($reshook)) { $demoprofiles=array( array('default'=>'1', 'key'=>'profdemoservonly','label'=>'DemoCompanyServiceOnly', - 'disablemodules'=>'adherent,barcode,cashdesk,categorie,don,expedition,externalsite,mailmanspip,margin,prelevement,product,stock', + 'disablemodules'=>'adherent,barcode,cashdesk,categorie,don,expedition,externalsite,incoterm,mailmanspip,margin,prelevement,product,productbatch,stock', 'icon'=>DOL_URL_ROOT.'/public/demo/dolibarr_screenshot8.png'), array('default'=>'-1','key'=>'profdemoshopwithdesk','label'=>'DemoCompanyShopWithCashDesk', - 'disablemodules'=>'adherent,categorie,don,externalsite,ficheinter,mailmanspip,prelevement,product,stock', + 'disablemodules'=>'adherent,categorie,don,externalsite,ficheinter,incoterm,mailmanspip,prelevement,product,productbatch,stock', 'icon'=>DOL_URL_ROOT.'/public/demo/dolibarr_screenshot2.png'), array('default'=>'0', 'key'=>'profdemoprodstock','label'=>'DemoCompanyProductAndStocks', 'disablemodules'=>'adherent,contrat,categorie,don,externalsite,ficheinter,mailmanspip,prelevement,service', @@ -73,16 +73,16 @@ if (empty($reshook)) 'disablemodules'=>'adherent,don,externalsite,mailmanspip', 'icon'=>DOL_URL_ROOT.'/public/demo/dolibarr_screenshot9.png'), array('default'=>'-1', 'key'=>'profdemofun','label'=>'DemoFundation', - 'disablemodules'=>'banque,barcode,cashdesk,commande,commercial,compta,comptabilite,contrat,expedition,externalsite,facture,ficheinter,fournisseur,mailmanspip,margin,prelevement,product,projet,propal,propale,service,societe,stock,tax', + 'disablemodules'=>'banque,barcode,cashdesk,commande,commercial,compta,comptabilite,contrat,expedition,externalsite,facture,ficheinter,fournisseur,incoterm,mailmanspip,margin,prelevement,product,productbatch,projet,propal,propale,service,societe,stock,tax', 'icon'=>DOL_URL_ROOT.'/public/demo/dolibarr_screenshot6.png'), array('default'=>'0', 'key'=>'profdemofun2','label'=>'DemoFundation2', - 'disablemodules'=>'barcode,cashdesk,commande,commercial,compta,comptabilite,contrat,expedition,externalsite,facture,ficheinter,fournisseur,mailmanspip,margin,prelevement,product,projet,propal,propale,service,societe,stock,tax', + 'disablemodules'=>'barcode,cashdesk,commande,commercial,compta,comptabilite,contrat,expedition,externalsite,facture,ficheinter,fournisseur,mailmanspip,margin,prelevement,product,productbatch,projet,propal,propale,service,societe,stock,tax', 'icon'=>DOL_URL_ROOT.'/public/demo/dolibarr_screenshot6.png') ); // Visible $alwayscheckedmodules=array('barcode','bookmark','externalrss','fckeditor','geoipmaxmind','gravatar','memcached','syslog','user','webservices'); // Technical module we always want - $alwaysuncheckedmodules=array('paybox','paypal','google','scanner','workflow'); // Module we never want + $alwaysuncheckedmodules=array('paybox','paypal','google','printing','resource','scanner','workflow'); // Module we never want // Not visible $alwayshiddencheckedmodules=array('accounting','barcode','bookmark','clicktodial','comptabilite','document','domain','externalrss','externalsite','fckeditor','geoipmaxmind','gravatar','label','ldap', 'mailmanspip','notification','syslog','user','webservices', From a2e93056f7eeeb18720126388944a2ad10216a5f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 27 Dec 2015 23:42:09 +0100 Subject: [PATCH 04/12] Prepare 3.8.3 --- ChangeLog | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/ChangeLog b/ChangeLog index 1cf62269654..4200d8ec9fc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,6 +9,84 @@ Upgrading to any other version or any other database system is abolutely require make a Dolibarr upgrade. +***** ChangeLog for 3.8.3 compared to 3.8.2 ***** +FIX: #3805 +FIX: #3231 [Members] Public subscription page displays GeoIP error +FIX: #3240 +FIX: #3293 Login page form icons not shown +FIX: #3508 Useless tooltip in 3.8 boxes +FIX: #3661 Margin is not selected correctly when adding a product +FIX: #3679 Error when deleting a Localtax2 special payment +FIX: #3707 Thirdparty bank account page table has a glitch +FIX: #3726 When upload file, don't test if PRODUCT_USE_OLD_PATH_FOR_PHOTO variable is empty or not +FIX: #3734 Do not show empty links of deleted source objects in stock movement list +FIX: #3836 Unable to upload a document to an invoice under some circunstances +FIX: #3878 Storing and deleting files on emailing was done at wrong place +FIX: #3880 +FIX: #3882 +FIX: #3890 Expected transactions bank account page, shows negative numbers +FIX: #3912 +FIX: #3928 Creating a Customer order and a Customer invoice from a project, does not inherit payment conditions and method of payment of customer card +FIX: #3953 Don't round supplier price +FIX: #3953 rounding of buying price +FIX: #3980 Search field in "product by supplier" list sends empty result 3.8 and 3.7 +FIX: #3987 Undefined variable $newref in CommandeFournisseur::approve +FIX: #3988 Undefined variable $conf and $error in CommandeFournisseur::addline +FIX: #3989 Undefined variable $conf in CommandeFournisseur::getNomUrl +FIX: #3990 +FIX: #3992 CommandeFournisseur::ref is marked as deprecated and it shouldn't be +FIX: #3996 Dictionnary hooks are not working in 3.8 +FIX: #3997 Wrong permission key used for Margins > Read all +FIX: #4016 User link is not correctly formed in emailing receivers +FIX: #4018 SQL error if trying to access the mailing/card.php page without an ID defined +FIX: #4036 Direct printing module without any driver configured, shows an unformatted error message +FIX: #4043 Incorrect translation in error mesage in menu creation admin page +FIX: #4049 PHP warning when trying to access a non-existing product/service +FIX: #4055 SQL error when trying to access a non-existing expedition +FIX: #4081 Added missing translation +FIX: #4097 Public holiday calculation +FIX: #4182 SQL error when deleting an unexisting bank entry +FIX: #4242 Allow disabling dashes in documents +FIX: #4243 sql injection +FIX: #4281 +FIX: #4282 Defined shipping time were not shown in Customer order's PDF documents +FIX: #4285 SQL query shown when accessing an unexisting invoice +FIX: #4287 SQL error when accessing an unexisting proposal +FIX: #4302 Undefined variable $conf in Commande::LibStatut +FIX: Allow to search on alias name into select +FIX: Add a protection to not make release if ChangeLog was not generated. +FIX: autofocus on input search product +FIX: bad calculation for stock value +FIX: Better compatibility for users that used the not supported option MAIN_USE_JQUERY_MULTISELECT set to 1. +FIX: Bug: $this is not accessible in static context in Mailing::libStatutDest #4050 +FIX: can not have access to the new ids or propal lines on PROPAL_CLONE +FIX: Can't update line's duration +FIX: Can use formated float number on old expense report module. +FIX: change object statut on close shipping and remove erratic db commit +FIX: change order date on clone (as everywhere else) +FIX: event's data lost on user assign update +FIX: export propal and order with extrafields +FIX: export with category contact extrafields +FIX: jquery select of project generate js error on change event +FIX: label of line is set in description field if empty +FIX: loss data also if update was cancel by error of ended state with no end date, try a generic patch +FIX: mail isn't display in title on event in mode view +FIX: Missing to set context into workflow actions, so triggers can't know we are creating an invoice from order or an order from a proposal. +FIX: NB task and percent progress in box project +FIX: Not delete a product when have customer price +FIX: Not deleting contrats on element_element table +FIX: Not use localtaxes when invoice some orders +FIX: only active customer should be available into select list thirdparty on invoice creation +FIX: only active customer should be return into new invoice creation select list +FIX: AWP calculation +FIX: product link in project box +FIX: Remove column creation for table llx_product_fournisseur_price, the column use un calss is fk_supplier_price_expression, and fk_price_expression does not exist into lx_product_fournisseur_price sql file declaration +FIX: Show category selector if we have permission to view products or services +FIX: showrefnav htmlspecialchar instead of < > +FIX: The label hidden was not supported when using jmobile +FIX: Too many information were hidden. A lot of users still need bank account on PDF. +FIX: Use "WHERE true" instead of "WHERE 1" #4132 + ***** ChangeLog for 3.8.2 compared to 3.8.1 ***** FIX: Add a protection to not make release if ChangeLog was not generated. FIX: 1/ update_extra() function must not be in "if(!empty(MAIN_DISABLE_CONTACTS_TAB)" test. 2/ Reindented code From cfd01b6060372391aad7166b6963de80227b756b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 27 Dec 2015 23:50:13 +0100 Subject: [PATCH 05/12] Fix package for 3.8.3 --- build/makepack-dolibarr.pl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build/makepack-dolibarr.pl b/build/makepack-dolibarr.pl index 8fc8e49aaf8..9a6a9175ca7 100755 --- a/build/makepack-dolibarr.pl +++ b/build/makepack-dolibarr.pl @@ -495,6 +495,8 @@ if ($nboftargetok) { $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/cabinetmed*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/calling*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/bootstrap*`; + $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/dolimed*`; + $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/dolimod*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/factory*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/lead*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/management*`; @@ -506,6 +508,7 @@ if ($nboftargetok) { $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/teclib*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/timesheet*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/themes/oblyon*`; + $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/themes/allscreen*`; # Removed other test files $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/themes/eldy/*.new`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/public/api/explorer`; # This is a dev tool From 5773171efc459e7ece3faa7eb7cc9fd03f1ec8f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Mon, 28 Dec 2015 14:04:22 +0100 Subject: [PATCH 06/12] FIX #4155 Search Categories error --- htdocs/categories/class/categorie.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index f632492a59d..18f13a44813 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -1294,7 +1294,7 @@ class Categorie extends CommonObject if (is_numeric( $type )) { // We want to reverse lookup $map_type = array_flip( $this->MAP_ID ); - $type = $map_type; + $type = $map_type[$type]; dol_syslog( get_class( $this ) . "::rechercher(): numeric types are deprecated, please use string instead", LOG_WARNING ); } From bec00e37e04ddeedd49d9c00df35c2a39a9adeaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Mon, 28 Dec 2015 15:04:24 +0100 Subject: [PATCH 07/12] FIX #4272 Error when trying to print the page "Linked objects" of a Thirdparty --- htdocs/societe/consumption.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/htdocs/societe/consumption.php b/htdocs/societe/consumption.php index 2282b42cf0f..2ac01c84bc9 100644 --- a/htdocs/societe/consumption.php +++ b/htdocs/societe/consumption.php @@ -177,10 +177,8 @@ dol_fiche_end(); print '
'; -print '
'; +print ''; print ''; -print ''."\n"; - $sql_select=''; /*if ($type_element == 'action') From c004342976ae1cf5fe9d3c994b6a7637ae603d81 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 31 Dec 2015 14:55:10 +0100 Subject: [PATCH 08/12] FIX #3694 --- htdocs/core/lib/company.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index 380ecd80943..a527200e203 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -938,9 +938,9 @@ function show_actions_todo($conf,$langs,$db,$object,$objcon='',$noprint=0) if (get_class($object) == 'Adherent') $sql.= ", m.lastname, m.firstname"; if (get_class($object) == 'Societe') $sql.= ", sp.lastname, sp.firstname"; $sql.= " FROM ".MAIN_DB_PREFIX."user as u, ".MAIN_DB_PREFIX."actioncomm as a"; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_actioncomm as c ON a.fk_action = c.id"; if (get_class($object) == 'Adherent') $sql.= ", ".MAIN_DB_PREFIX."adherent as m"; if (get_class($object) == 'Societe') $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."socpeople as sp ON a.fk_contact = sp.rowid"; - $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_actioncomm as c ON a.fk_action = c.id "; $sql.= " WHERE u.rowid = a.fk_user_author"; $sql.= " AND a.entity IN (".getEntity('agenda', 1).")"; if (get_class($object) == 'Adherent') { From a234482d085dfde843851941a7c8d27fa57d34e6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 31 Dec 2015 14:55:53 +0100 Subject: [PATCH 09/12] FIX #3694 --- htdocs/core/lib/company.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index a527200e203..7a7cd386f4f 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -939,8 +939,8 @@ function show_actions_todo($conf,$langs,$db,$object,$objcon='',$noprint=0) if (get_class($object) == 'Societe') $sql.= ", sp.lastname, sp.firstname"; $sql.= " FROM ".MAIN_DB_PREFIX."user as u, ".MAIN_DB_PREFIX."actioncomm as a"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_actioncomm as c ON a.fk_action = c.id"; - if (get_class($object) == 'Adherent') $sql.= ", ".MAIN_DB_PREFIX."adherent as m"; if (get_class($object) == 'Societe') $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."socpeople as sp ON a.fk_contact = sp.rowid"; + if (get_class($object) == 'Adherent') $sql.= ", ".MAIN_DB_PREFIX."adherent as m"; $sql.= " WHERE u.rowid = a.fk_user_author"; $sql.= " AND a.entity IN (".getEntity('agenda', 1).")"; if (get_class($object) == 'Adherent') { From fffc8a430dfebd51720143738d74ece8715a3f9a Mon Sep 17 00:00:00 2001 From: phf Date: Thu, 31 Dec 2015 15:48:16 +0100 Subject: [PATCH 10/12] FIX call trigger LINEBILL_SUPPLIER_CREATE --- htdocs/fourn/facture/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index 21aab088fd0..32a608b39bd 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -447,7 +447,7 @@ if (empty($reshook)) 'HT', $product_type, $lines[$i]->rang, - 1, + 0, $lines[$i]->array_options, $lines[$i]->fk_unit ); From 35ce670bf260f63ab8b3df391d7857f8144cb026 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 2 Jan 2016 12:18:12 +0100 Subject: [PATCH 11/12] Fix to allow phpunit of migration process for 3.4 to 3.5 --- htdocs/install/upgrade.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/install/upgrade.php b/htdocs/install/upgrade.php index 05defaed9eb..699d4a64a99 100644 --- a/htdocs/install/upgrade.php +++ b/htdocs/install/upgrade.php @@ -19,7 +19,7 @@ * Upgrade scripts can be ran from command line with syntax: * * cd htdocs/install - * php upgrade.php 3.4.0 3.5.0 + * php upgrade.php 3.4.0 3.5.0 [dirmodule|ignoredbversion] * php upgrade2.php 3.4.0 3.5.0 * * Return code is 0 if OK, >0 if error @@ -54,7 +54,8 @@ $setuplang=GETPOST("selectlang",'',3)?GETPOST("selectlang",'',3):'auto'; $langs->setDefaultLang($setuplang); $versionfrom=GETPOST("versionfrom",'',3)?GETPOST("versionfrom",'',3):(empty($argv[1])?'':$argv[1]); $versionto=GETPOST("versionto",'',3)?GETPOST("versionto",'',3):(empty($argv[2])?'':$argv[2]); -$versionmodule=GETPOST("versionmodule",'',3)?GETPOST("versionmodule",'',3):(empty($argv[3])?'':$argv[3]); +$versionmodule=(GETPOST("versionmodule",'',3) && GETPOST("versionmodule",'',3) != 'ignoredbversion')?GETPOST("versionmodule",'',3):((empty($argv[3]) || $argv[3] == 'ignoredbversion')?'':$argv[3]); +$ignoredbversion=(GETPOST('ignoredbversion','',3)=='ignoredbversion')?GETPOST('ignoredbversion','',3):((empty($argv[3]) || $argv[3] != 'ignoredbversion')?'':$argv[3]); $langs->load("admin"); $langs->load("install"); From b46aec8e7e9eca19cb1739f94fe99267298b4a26 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 2 Jan 2016 12:18:26 +0100 Subject: [PATCH 12/12] Fix to allow phpunit of migration process for 3.5 to 3.6 --- htdocs/install/upgrade.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/htdocs/install/upgrade.php b/htdocs/install/upgrade.php index 9b15d36ffe9..c8190ec611b 100644 --- a/htdocs/install/upgrade.php +++ b/htdocs/install/upgrade.php @@ -55,6 +55,9 @@ $langs->setDefaultLang($setuplang); $versionfrom=GETPOST("versionfrom",'',3)?GETPOST("versionfrom",'',3):(empty($argv[1])?'':$argv[1]); $versionto=GETPOST("versionto",'',3)?GETPOST("versionto",'',3):(empty($argv[2])?'':$argv[2]); $versionmodule=GETPOST("versionmodule",'',3)?GETPOST("versionmodule",'',3):(empty($argv[3])?'':$argv[3]); +$versionmodule=(GETPOST("versionmodule",'',3) && GETPOST("versionmodule",'',3) != 'ignoredbversion')?GETPOST("versionmodule",'',3):((empty($argv[3]) || $argv[3] == 'ignoredbversion')?'':$argv[3]); +$ignoredbversion=(GETPOST('ignoredbversion','',3)=='ignoredbversion')?GETPOST('ignoredbversion','',3):((empty($argv[3]) || $argv[3] != 'ignoredbversion')?'':$argv[3]); + $langs->load("admin"); $langs->load("install");