2009-12-16 14:02:53 +00:00
#----------------------------------------------------------------------------
# \file dolibarr.pl
# \brief Dolibarr script install for Virtualmin Pro
2025-11-22 18:48:37 +00:00
# \author (c)2009-2025 Regis Houssin <regis.houssin@inodbox.com>
2009-12-16 14:02:53 +00:00
#----------------------------------------------------------------------------
# script_dolibarr_desc()
sub script_dolibarr_desc
{
return "Dolibarr" ;
}
sub script_dolibarr_uses
{
return ( "php" ) ;
}
# script_dolibarr_longdesc()
sub script_dolibarr_longdesc
{
return "Dolibarr ERP/CRM is a powerful Open Source software to manage a professional or foundation activity (small and medium enterprises, freelancers)." ;
}
2010-04-05 17:42:45 +00:00
sub script_dolibarr_author
{
return "Regis Houssin" ;
}
2009-12-16 14:02:53 +00:00
# script_dolibarr_versions()
sub script_dolibarr_versions
{
2025-11-22 18:48:37 +00:00
return ( "22.0.3" , "21.0.4" , "20.0.4" , "19.0.4" , "18.0.8" , "17.0.4" , "16.0.5" ) ;
}
sub script_dolibarr_version_desc
{
local ( $ ver ) = @ _ ;
my ( $ major_ver ) = $ ver =~ /^(\d+)\..*/ ;
return $ major_ver == 22 ? "$ver (Latest)" :
$ major_ver == 18 ? "$ver (LTS)" : "$ver" ;
2017-08-22 06:31:23 +00:00
}
sub script_dolibarr_release
{
return 2 ; # for mysqli fix
2010-04-05 17:42:45 +00:00
}
2025-11-22 18:48:37 +00:00
sub script_dolibarr_testable
{
return 1 ;
}
2009-12-16 14:02:53 +00:00
sub script_dolibarr_category
{
2010-04-05 17:42:45 +00:00
return "Commerce" ;
2009-12-16 14:02:53 +00:00
}
sub script_dolibarr_php_vers
{
2025-11-22 18:48:37 +00:00
return ( 7 ) ;
}
sub script_dolibarr_php_vars
{
return ( [ 'memory_limit' , '128M' , '+' ] ) ;
2009-12-16 14:02:53 +00:00
}
2025-11-22 18:48:37 +00:00
2009-12-16 14:02:53 +00:00
sub script_dolibarr_php_modules
{
local ( $ d , $ ver , $ phpver , $ opts ) = @ _ ;
local ( $ dbtype , $ dbname ) = split ( /_/ , $ opts - > { 'db' } , 2 ) ;
2025-11-22 18:48:37 +00:00
local @ modules = ( "xml" , "mbstring" , "gd" , "iconv" ,
"curl" , "intl" , "zip" ) ;
push ( @ modules , ( $ dbtype eq "mysql" ? "mysql" : "pgsql" ) ) ;
return @ modules ;
2009-12-16 14:02:53 +00:00
}
sub script_dolibarr_dbs
{
local ( $ d , $ ver ) = @ _ ;
return ( "mysql" , "postgres" ) ;
}
2025-11-22 18:48:37 +00:00
sub script_dolibarr_php_fullver
2015-08-09 11:25:09 +00:00
{
2025-11-22 18:48:37 +00:00
local ( $ d , $ ver , $ sinfo ) = @ _ ;
return "7.1" ;
2015-08-09 11:25:09 +00:00
}
2009-12-16 14:02:53 +00:00
# script_dolibarr_params(&domain, version, &upgrade-info)
# Returns HTML for table rows for options for installing dolibarr
sub script_dolibarr_params
{
local ( $ d , $ ver , $ upgrade ) = @ _ ;
local $ rv ;
local $ hdir = & public_html_dir ( $ d , 1 ) ;
if ( $ upgrade ) {
# Options are fixed when upgrading
local ( $ dbtype , $ dbname ) = split ( /_/ , $ upgrade - > { 'opts' } - > { 'db' } , 2 ) ;
$ rv . = & ui_table_row ( "Database for Dolibarr tables" , $ dbname ) ;
local $ dir = $ upgrade - > { 'opts' } - > { 'dir' } ;
$ dir =~ s/^$d->{'home'}\/// ;
$ rv . = & ui_table_row ( "Install directory" , $ dir ) ;
}
else {
# Show editable install options
local @ dbs = & domain_databases ( $ d , [ "mysql" ] ) ;
$ rv . = & ui_table_row ( "Database for Dolibarr tables" ,
& ui_database_select ( "db" , undef , \ @ dbs , $ d , "dolibarr" ) ) ;
$ rv . = & ui_table_row ( "Install sub-directory under <tt>$hdir</tt>" ,
2015-08-09 11:25:09 +00:00
& ui_opt_textbox ( "dir" , & substitute_scriptname_template ( "dolibarr" , $ d ) , 30 , "At top level" ) ) ;
2011-04-01 13:26:08 +00:00
if ( $ d - > { 'ssl' } && $ ver >= 3.0 ) {
2010-10-04 21:07:21 +00:00
$ rv . = & ui_table_row ( "Force https connection?" ,
2010-10-17 06:50:45 +00:00
& ui_yesno_radio ( "forcehttps" , 0 ) ) ;
2010-10-04 21:07:21 +00:00
}
2009-12-16 14:02:53 +00:00
}
return $ rv ;
}
# script_dolibarr_parse(&domain, version, &in, &upgrade-info)
# Returns either a hash ref of parsed options, or an error string
sub script_dolibarr_parse
{
local ( $ d , $ ver , $ in , $ upgrade ) = @ _ ;
if ( $ upgrade ) {
# Options are always the same
return $ upgrade - > { 'opts' } ;
}
else {
local $ hdir = & public_html_dir ( $ d , 0 ) ;
$ in { 'dir_def' } || $ in { 'dir' } =~ /\S/ && $ in { 'dir' } !~ /\.\./ ||
return "Missing or invalid installation directory" ;
local $ dir = $ in { 'dir_def' } ? $ hdir : "$hdir/$in{'dir'}" ;
local ( $ newdb ) = ( $ in - > { 'db' } =~ s/^\*// ) ;
return { 'db' = > $ in - > { 'db' } ,
'newdb' = > $ newdb ,
'dir' = > $ dir ,
'path' = > $ in - > { 'dir_def' } ? "/" : "/$in->{'dir'}" ,
2010-10-04 21:07:21 +00:00
'forcehttps' = > $ in - > { 'forcehttps' } , } ;
2009-12-16 14:02:53 +00:00
}
}
# script_dolibarr_check(&domain, version, &opts, &upgrade-info)
# Returns an error message if a required option is missing or invalid
sub script_dolibarr_check
{
local ( $ d , $ ver , $ opts , $ upgrade ) = @ _ ;
$ opts - > { 'dir' } =~ /^\// || return "Missing or invalid install directory" ;
$ opts - > { 'db' } || return "Missing database" ;
if ( - r "$opts->{'dir'}/conf/conf.php" ) {
return "Dolibarr appears to be already installed in the selected directory" ;
}
local ( $ dbtype , $ dbname ) = split ( /_/ , $ opts - > { 'db' } , 2 ) ;
local $ clash = & find_database_table ( $ dbtype , $ dbname , "llx_.*" ) ;
$ clash && return "Dolibarr appears to be already using the selected database (table $clash)" ;
return undef ;
}
# script_dolibarr_files(&domain, version, &opts, &upgrade-info)
# Returns a list of files needed by dolibarr, each of which is a hash ref
# containing a name, filename and URL
sub script_dolibarr_files
{
local ( $ d , $ ver , $ opts , $ upgrade ) = @ _ ;
local @ files = ( { 'name' = > "source" ,
'file' = > "Dolibarr_$ver.tar.gz" ,
2012-01-04 07:41:40 +00:00
'url' = > "http://prdownloads.sourceforge.net/dolibarr/dolibarr-$ver.tgz" } ) ;
2009-12-16 14:02:53 +00:00
return @ files ;
}
sub script_dolibarr_commands
{
return ( "tar" , "gunzip" ) ;
}
# script_dolibarr_install(&domain, version, &opts, &files, &upgrade-info)
2018-03-15 17:58:30 +00:00
# Actually installs dolibarr, and returns either 1 and an informational
2009-12-16 14:02:53 +00:00
# message, or 0 and an error
sub script_dolibarr_install
{
local ( $ d , $ version , $ opts , $ files , $ upgrade , $ domuser , $ dompass ) = @ _ ;
local ( $ out , $ ex ) ;
if ( $ opts - > { 'newdb' } && ! $ upgrade ) {
local $ err = & create_script_database ( $ d , $ opts - > { 'db' } ) ;
return ( 0 , "Database creation failed : $err" ) if ( $ err ) ;
}
local ( $ dbtype , $ dbname ) = split ( /_/ , $ opts - > { 'db' } , 2 ) ;
local $ dbuser = $ dbtype eq "mysql" ? & mysql_user ( $ d ) : & postgres_user ( $ d ) ;
local $ dbpass = $ dbtype eq "mysql" ? & mysql_pass ( $ d ) : & postgres_pass ( $ d , 1 ) ;
2017-08-22 06:31:23 +00:00
local $ dbphptype = $ dbtype eq "mysql" && $ version < 3.6 ? "mysql" :
2015-08-09 11:25:09 +00:00
$ dbtype eq "mysql" ? "mysqli" : "pgsql" ;
2017-08-22 06:31:23 +00:00
local $ dbhost = & get_database_host ( $ dbtype , $ d ) ;
2025-11-22 18:48:37 +00:00
local $ dberr = & check_script_db_connection ( $ d , $ dbtype , $ dbname , $ dbuser , $ dbpass ) ;
2009-12-16 14:02:53 +00:00
return ( 0 , "Database connection failed : $dberr" ) if ( $ dberr ) ;
# Extract tar file to temp dir and copy to target
local $ temp = & transname ( ) ;
local $ err = & extract_script_archive ( $ files - > { 'source' } , $ temp , $ d ,
2012-01-04 07:41:40 +00:00
$ opts - > { 'dir' } , "dolibarr-$ver/htdocs" ) ;
2009-12-16 14:02:53 +00:00
$ err && return ( 0 , "Failed to extract source : $err" ) ;
# Add config file
local $ cfiledir = "$opts->{'dir'}/conf/" ;
local $ docdir = "$opts->{'dir'}/documents" ;
2011-04-22 19:38:50 +00:00
local $ altdir = "$opts->{'dir'}/custom" ;
2009-12-16 14:02:53 +00:00
local $ cfile = $ cfiledir . "conf.php" ;
local $ oldcfile = & transname ( ) ;
local $ olddocdir = & transname ( ) ;
2011-04-22 19:38:50 +00:00
local $ oldaltdir = & transname ( ) ;
2009-12-16 14:02:53 +00:00
local $ url ;
2010-10-08 07:29:05 +00:00
2010-10-07 17:12:26 +00:00
$ tmpl = & get_template ( $ d - > { 'template' } ) ;
2010-10-08 07:29:05 +00:00
$ mycharset = $ tmpl - > { 'mysql_charset' } ;
$ mycollate = $ tmpl - > { 'mysql_collate' } ;
$ pgcharset = $ tmpl - > { 'postgres_encoding' } ;
$ charset = $ dbtype eq "mysql" ? $ mycharset : $ pgcharset ;
$ collate = $ dbtype eq "mysql" ? $ mycollate : "C" ;
2009-12-16 14:02:53 +00:00
$ path = & script_path_url ( $ d , $ opts ) ;
2010-10-17 06:50:45 +00:00
if ( $ path =~ /^https:/ || $ d - > { 'ssl' } ) {
2010-04-05 19:09:08 +00:00
$ url = "https://$d->{'dom'}" ;
2009-12-16 14:02:53 +00:00
}
else {
2010-04-05 19:09:08 +00:00
$ url = "http://$d->{'dom'}" ;
2009-12-16 14:02:53 +00:00
}
if ( $ opts - > { 'path' } =~ /\w/ ) {
$ url . = $ opts - > { 'path' } ;
}
if ( ! $ upgrade ) {
2011-04-22 19:38:50 +00:00
local $ cdef = "$opts->{'dir'}/conf/conf.php.example" ;
2017-08-22 06:31:23 +00:00
& copy_source_dest_as_domain_user ( $ d , $ cdef , $ cfile ) ;
2015-08-09 11:25:09 +00:00
& set_permissions_as_domain_user ( $ d , 0777 , $ cfiledir ) ;
2017-08-22 06:31:23 +00:00
& copy_source_dest_as_domain_user ( $ d , $ cfile ) ;
2010-10-04 21:07:21 +00:00
& run_as_domain_user ( $ d , "mkdir " . quotemeta ( $ docdir ) ) ;
2015-08-09 11:25:09 +00:00
& set_permissions_as_domain_user ( $ d , 0777 , $ docdir ) ;
2011-04-22 19:38:50 +00:00
}
2009-12-16 14:02:53 +00:00
else {
2011-04-22 19:38:50 +00:00
# Preserve old config file, documents and custom directory
2009-12-16 14:02:53 +00:00
& copy_source_dest ( $ cfile , $ oldcfile ) ;
& copy_source_dest ( $ docdir , $ olddocdir ) ;
2011-04-22 19:38:50 +00:00
& copy_source_dest ( $ altdir , $ oldaltdir ) ;
}
2009-12-16 14:02:53 +00:00
if ( $ upgrade ) {
2011-04-22 19:38:50 +00:00
# Put back original config file, documents and custom directory
2009-12-16 14:02:53 +00:00
& copy_source_dest_as_domain_user ( $ d , $ oldcfile , $ cfile ) ;
& copy_source_dest_as_domain_user ( $ d , $ olddocdir , $ docdir ) ;
2011-04-22 19:38:50 +00:00
& copy_source_dest_as_domain_user ( $ d , $ oldaltdir , $ altdir ) ;
2026-01-07 18:01:54 +00:00
2009-12-16 14:02:53 +00:00
# First page (Update database schema)
local @ params = ( [ "action" , "upgrade" ] ,
2010-04-04 08:15:20 +00:00
[ "versionfrom" , $ upgrade - > { 'version' } ] ,
[ "versionto" , $ ver ] ,
2009-12-16 14:02:53 +00:00
) ;
local $ err = & call_dolibarr_wizard_page ( \ @ params , "upgrade" , $ d , $ opts ) ;
return ( - 1 , "Dolibarr wizard failed : $err" ) if ( $ err ) ;
2026-01-07 18:01:54 +00:00
2009-12-16 14:02:53 +00:00
# Second page (Migrate some data)
2010-04-03 23:16:30 +00:00
local @ params = ( [ "action" , "upgrade" ] ,
2010-04-04 08:15:20 +00:00
[ "versionfrom" , $ upgrade - > { 'version' } ] ,
[ "versionto" , $ ver ] ,
2010-04-03 23:16:30 +00:00
) ;
2009-12-16 14:02:53 +00:00
local $ err = & call_dolibarr_wizard_page ( \ @ params , "upgrade2" , $ d , $ opts ) ;
return ( - 1 , "Dolibarr wizard failed : $err" ) if ( $ err ) ;
2026-01-07 18:01:54 +00:00
2010-04-04 08:15:20 +00:00
# Third page (Update version number)
local @ params = ( [ "action" , "upgrade" ] ,
[ "versionfrom" , $ upgrade - > { 'version' } ] ,
[ "versionto" , $ ver ] ,
2018-12-03 12:31:28 +00:00
[ "installlock" , "444" ] ,
2010-04-04 08:15:20 +00:00
) ;
2017-08-22 06:31:23 +00:00
local $ p = $ ver >= 3.8 ? "step5" : "etape5" ;
local $ err = & call_dolibarr_wizard_page ( \ @ params , $ p , $ d , $ opts ) ;
2010-04-04 08:15:20 +00:00
return ( - 1 , "Dolibarr wizard failed : $err" ) if ( $ err ) ;
2026-01-07 18:01:54 +00:00
2018-12-03 12:12:42 +00:00
# Remove the installation directory. (deprecated)
# local $dinstall = "$opts->{'dir'}/install";
# $dinstall =~ s/\/$//;
# $out = &run_as_domain_user($d, "rm -rf ".quotemeta($dinstall));
2026-01-07 18:01:54 +00:00
2009-12-16 14:02:53 +00:00
}
else {
# First page (Db connection and config file creation)
local @ params = ( [ "main_dir" , $ opts - > { 'dir' } ] ,
[ "main_data_dir" , $ opts - > { 'dir' } . "/documents" ] ,
[ "main_url" , $ url ] ,
[ "db_type" , $ dbphptype ] ,
[ "db_host" , $ dbhost ] ,
[ "db_name" , $ dbname ] ,
[ "db_user" , $ dbuser ] ,
[ "db_pass" , $ dbpass ] ,
2025-11-22 18:48:37 +00:00
[ "db_prefix" , 'llx_' ] ,
[ "db_port" , '3306' ] ,
[ "selectlang" , 'en_US' ] ,
2009-12-16 14:02:53 +00:00
[ "action" , "set" ] ,
2010-10-04 21:07:21 +00:00
[ "main_force_https" , $ opts - > { 'forcehttps' } ] ,
2010-10-07 17:12:26 +00:00
[ "dolibarr_main_db_character_set" , $ charset ] ,
[ "dolibarr_main_db_collation" , $ collate ] ,
2017-08-22 06:31:23 +00:00
[ "usealternaterootdir" , "1" ] ,
2011-04-22 19:38:50 +00:00
[ "main_alt_dir_name" , "custom" ] ,
2009-12-16 14:02:53 +00:00
) ;
2017-08-22 06:31:23 +00:00
local $ p = $ ver >= 3.8 ? "step1" : "etape1" ;
local $ err = & call_dolibarr_wizard_page ( \ @ params , $ p , $ d , $ opts ) ;
2009-12-16 14:02:53 +00:00
return ( - 1 , "Dolibarr wizard failed : $err" ) if ( $ err ) ;
2026-01-07 18:01:54 +00:00
2009-12-16 14:02:53 +00:00
# Second page (Populate database)
local @ params = ( [ "action" , "set" ] ) ;
2017-08-22 06:31:23 +00:00
local $ p = $ ver >= 3.8 ? "step2" : "etape2" ;
local $ err = & call_dolibarr_wizard_page ( \ @ params , $ p , $ d , $ opts ) ;
2009-12-16 14:02:53 +00:00
return ( - 1 , "Dolibarr wizard failed : $err" ) if ( $ err ) ;
2026-01-07 18:01:54 +00:00
2009-12-16 14:02:53 +00:00
# Third page (Add administrator account)
local @ params = ( [ "action" , "set" ] ,
[ "login" , "admin" ] ,
[ "pass" , $ dompass ] ,
[ "pass_verif" , $ dompass ] ,
2018-12-03 12:31:28 +00:00
[ "installlock" , "444" ] ,
2009-12-16 14:02:53 +00:00
) ;
2017-08-22 06:31:23 +00:00
local $ p = $ ver >= 3.8 ? "step5" : "etape5" ;
local $ err = & call_dolibarr_wizard_page ( \ @ params , $ p , $ d , $ opts ) ;
2009-12-16 14:02:53 +00:00
return ( - 1 , "Dolibarr wizard failed : $err" ) if ( $ err ) ;
2026-01-07 18:01:54 +00:00
2018-12-03 12:12:42 +00:00
# Remove the installation directory (deprecated)
# local $dinstall = "$opts->{'dir'}/install";
# $dinstall =~ s/\/$//;
# $out = &run_as_domain_user($d, "rm -rf ".quotemeta($dinstall));
2026-01-07 18:01:54 +00:00
2018-12-03 12:12:42 +00:00
# Protect config file
2015-08-09 11:25:09 +00:00
& set_permissions_as_domain_user ( $ d , 0644 , $ cfile ) ;
& set_permissions_as_domain_user ( $ d , 0755 , $ cfiledir ) ;
2009-12-16 14:02:53 +00:00
}
2026-01-07 18:01:54 +00:00
2009-12-16 14:02:53 +00:00
# Return a URL for the user
local $ rp = $ opts - > { 'dir' } ;
$ rp =~ s/^$d->{'home'}\/// ;
local $ adminurl = $ url ;
return ( 1 , "Dolibarr installation complete. Go to <a target=_new href='$url'>$url</a> to use it." , "Under $rp using $dbtype database $dbname" , $ url , 'admin' , $ dompass ) ;
}
# call_dolibarr_wizard_page(¶meters, step-no, &domain, &opts)
sub call_dolibarr_wizard_page
{
local ( $ params , $ page , $ d , $ opts ) = @ _ ;
local $ params = join ( "&" , map { $ _ - > [ 0 ] . "=" . & urlize ( $ _ - > [ 1 ] ) } @$ params ) ;
local $ ipage = $ opts - > { 'path' } . "/install/" . $ page . ".php" ;
local ( $ iout , $ ierror ) ;
& post_http_connection ( $ d , $ ipage , $ params , \ $ iout , \ $ ierror ) ;
if ( $ ierror ) {
return $ ierror ;
}
return undef ;
}
# script_dolibarr_uninstall(&domain, version, &opts)
# Un-installs a dolibarr installation, by deleting the directory.
# Returns 1 on success and a message, or 0 on failure and an error
sub script_dolibarr_uninstall
{
local ( $ d , $ version , $ opts ) = @ _ ;
# Remove the contents of the target directory
local $ derr = & delete_script_install_directory ( $ d , $ opts ) ;
return ( 0 , $ derr ) if ( $ derr ) ;
# Remove all llx_ tables from the database
2015-10-14 10:09:51 +00:00
# 10 times because of constraints
for ( my $ i = 0 ; $ i < 10 ; $ i + + ) {
2015-08-09 11:25:09 +00:00
& cleanup_script_database ( $ d , $ opts - > { 'db' } , "llx_" ) ;
}
2009-12-16 14:02:53 +00:00
# Take out the DB
if ( $ opts - > { 'newdb' } ) {
& delete_script_database ( $ d , $ opts - > { 'db' } ) ;
}
return ( 1 , "Dolibarr directory and tables deleted." ) ;
}
2012-07-02 18:57:22 +00:00
# script_dolibarr_realversion(&domain, &opts)
# Returns the real version number of some script install, or undef if unknown
sub script_dolibarr_realversion
{
local ( $ d , $ opts , $ sinfo ) = @ _ ;
local $ lref = & read_file_lines ( "$opts->{'dir'}/filefunc.inc.php" , 1 ) ;
foreach my $ l ( @$ lref ) {
2020-10-13 10:06:28 +00:00
if ( $ l =~ /'DOL_VERSION',\s?'([0-9a-z\.\-]+)'/ ) {
2012-07-02 18:57:22 +00:00
return $ 1 ;
}
}
return undef ;
}
# script_dolibarr_check_latest(version)
# Checks if some version is the latest for this project, and if not returns
# a newer one. Otherwise returns undef.
sub script_dolibarr_check_latest
2009-12-16 14:02:53 +00:00
{
local ( $ ver ) = @ _ ;
2012-07-02 18:57:22 +00:00
local @ vers = & osdn_package_versions ( "dolibarr" ,
2025-11-22 18:48:37 +00:00
$ ver >= 22.0 ? "dolibarr\\-(22\\.0\\.[0-9\\.]+)\\.tgz" :
$ ver >= 21.0 ? "dolibarr\\-(21\\.0\\.[0-9\\.]+)\\.tgz" :
$ ver >= 20.0 ? "dolibarr\\-(20\\.0\\.[0-9\\.]+)\\.tgz" :
$ ver >= 19.0 ? "dolibarr\\-(19\\.0\\.[0-9\\.]+)\\.tgz" :
$ ver >= 18.0 ? "dolibarr\\-(18\\.0\\.[0-9\\.]+)\\.tgz" :
$ ver >= 17.0 ? "dolibarr\\-(17\\.0\\.[0-9\\.]+)\\.tgz" :
$ ver >= 16.0 ? "dolibarr\\-(16\\.0\\.[0-9\\.]+)\\.tgz" :
$ ver >= 15.0 ? "dolibarr\\-(15\\.0\\.[0-9\\.]+)\\.tgz" :
$ ver >= 14.0 ? "dolibarr\\-(14\\.0\\.[0-9\\.]+)\\.tgz" :
$ ver >= 13.0 ? "dolibarr\\-(13\\.0\\.[0-9\\.]+)\\.tgz" :
$ ver >= 12.0 ? "dolibarr\\-(12\\.0\\.[0-9\\.]+)\\.tgz" :
$ ver >= 11.0 ? "dolibarr\\-(11\\.0\\.[0-9\\.]+)\\.tgz" :
$ ver >= 10.0 ? "dolibarr\\-(10\\.0\\.[0-9\\.]+)\\.tgz" :
$ ver >= 9.0 ? "dolibarr\\-(9\\.0\\.[0-9\\.]+)\\.tgz" :
$ ver >= 8.0 ? "dolibarr\\-(8\\.0\\.[0-9\\.]+)\\.tgz" :
$ ver >= 7.0 ? "dolibarr\\-(7\\.0\\.[0-9\\.]+)\\.tgz" :
$ ver >= 6.0 ? "dolibarr\\-(6\\.0\\.[0-9\\.]+)\\.tgz" :
$ ver >= 5.0 ? "dolibarr\\-(5\\.0\\.[0-9\\.]+)\\.tgz" :
$ ver >= 4.0 ? "dolibarr\\-(4\\.0\\.[0-9\\.]+)\\.tgz" :
$ ver >= 3.9 ? "dolibarr\\-(3\\.9\\.[0-9\\.]+)\\.tgz" :
$ ver >= 3.8 ? "dolibarr\\-(3\\.8\\.[0-9\\.]+)\\.tgz" :
$ ver >= 3.7 ? "dolibarr\\-(3\\.7\\.[0-9\\.]+)\\.tgz" :
$ ver >= 3.6 ? "dolibarr\\-(3\\.6\\.[0-9\\.]+)\\.tgz" :
$ ver >= 3.5 ? "dolibarr\\-(3\\.5\\.[0-9\\.]+)\\.tgz" :
$ ver >= 2.9 ? "dolibarr\\-(2\\.9\\.[0-9\\.]+)\\.tgz" :
"dolibarr\\-(2\\.8\\.[0-9\\.]+)\\.tgz" ) ;
2012-07-02 18:57:22 +00:00
return "Failed to find versions" if ( ! @ vers ) ;
return $ ver eq $ vers [ 0 ] ? undef : $ vers [ 0 ] ;
2009-12-16 14:02:53 +00:00
}
sub script_dolibarr_site
{
2020-10-13 10:06:28 +00:00
return 'https://www.dolibarr.org/' ;
2009-12-16 14:02:53 +00:00
}
sub script_dolibarr_passmode
{
return 2 ;
}
2025-11-22 18:48:37 +00:00
sub script_dolibarr_db_conn_desc
{
2026-01-07 18:01:54 +00:00
my $ db_conn_desc =
2025-11-22 18:48:37 +00:00
{ 'conf/conf.php' = >
{
'dbpass' = >
{
'func' = > 'php_quotemeta' ,
'func_params' = > 1 ,
'replace' = > [ '\$dolibarr_main_db_pass\s*=' = >
'$dolibarr_main_db_pass=\'$$sdbpass\';' ] ,
} ,
'dbuser' = >
{
'replace' = > [ '\$dolibarr_main_db_user\s*=' = >
'$dolibarr_main_db_user=\'$$sdbuser\';' ] ,
} ,
}
} ;
return $ db_conn_desc ;
}
2009-12-16 14:02:53 +00:00
1 ;