Bläddra i källkod

Fix: compatibility with dolibarr versions before and after 3.7.1

Regis Houssin 9 år sedan
förälder
incheckning
542ed40c9c
1 ändrade filer med 20 tillägg och 16 borttagningar
  1. 20 16
      build/perl/virtualmin/dolibarr.pl

+ 20 - 16
build/perl/virtualmin/dolibarr.pl

@@ -30,7 +30,7 @@ return "Regis Houssin";
 # script_dolibarr_versions()
 sub script_dolibarr_versions
 {
-return ( "3.7.2", "3.6.3", "3.5.6" );
+return ( "3.8.1", "3.7.1", "3.6.4", "3.5.7" );
 }
 
 sub script_dolibarr_category
@@ -163,7 +163,7 @@ return ("tar", "gunzip");
 }
 
 # script_dolibarr_install(&domain, version, &opts, &files, &upgrade-info)
-# Actually installs joomla, and returns either 1 and an informational
+# Actually installs dolibarr, and returns either 1 and an informational
 # message, or 0 and an error
 sub script_dolibarr_install
 {
@@ -206,6 +206,9 @@ $pgcharset = $tmpl->{'postgres_encoding'};
 $charset = $dbtype eq "mysql" ? $mycharset : $pgcharset;
 $collate = $dbtype eq "mysql" ? $mycollate : "C";
 
+# Install filename
+local $step = $version >= 3.8 ? "step" : "etape";
+
 $path = &script_path_url($d, $opts);
 if ($path =~ /^https:/ || $d->{'ssl'}) {
         $url = "https://$d->{'dom'}";
@@ -224,6 +227,10 @@ if (!$upgrade) {
 	&set_permissions_as_domain_user($d, 0666, $cfile);
 	&run_as_domain_user($d, "mkdir ".quotemeta($docdir));
 	&set_permissions_as_domain_user($d, 0777, $docdir);
+	if (!$version >= 3.7.2) {
+		&run_as_domain_user($d, "mkdir ".quotemeta($altdir));
+		&set_permissions_as_domain_user($d, 0777, $altdir);
+	}
 }
 else {
 	# Preserve old config file, documents and custom directory
@@ -259,7 +266,7 @@ if ($upgrade) {
 			  [ "versionfrom", $upgrade->{'version'} ],
 			  [ "versionto", $ver ],
 			 );
-	local $err = &call_dolibarr_wizard_page(\@params, "step5", $d, $opts);
+	local $err = &call_dolibarr_wizard_page(\@params, $step."5", $d, $opts);
 	return (-1, "Dolibarr wizard failed : $err") if ($err);
 	
 	# Remove the installation directory.
@@ -282,15 +289,15 @@ else {
 			  [ "main_force_https", $opts->{'forcehttps'} ],
 			  [ "dolibarr_main_db_character_set", $charset ],
 			  [ "dolibarr_main_db_collation", $collate ],
-			  [ "usealternaterootdir", "1" ],
+			  [ "main_use_alt_dir", "1" ],
 			  [ "main_alt_dir_name", "custom" ],
 			 );
-	local $err = &call_dolibarr_wizard_page(\@params, "step1", $d, $opts);
+	local $err = &call_dolibarr_wizard_page(\@params, $step."1", $d, $opts);
 	return (-1, "Dolibarr wizard failed : $err") if ($err);
 	
 	# Second page (Populate database)
 	local @params = ( [ "action", "set" ] );
-	local $err = &call_dolibarr_wizard_page(\@params, "step2", $d, $opts);
+	local $err = &call_dolibarr_wizard_page(\@params, $step."2", $d, $opts);
 	return (-1, "Dolibarr wizard failed : $err") if ($err);
 	
 	# Third page (Add administrator account)
@@ -299,7 +306,7 @@ else {
 			  [ "pass", $dompass ],
 			  [ "pass_verif", $dompass ],
 	 		 );
-	local $err = &call_dolibarr_wizard_page(\@params, "step5", $d, $opts);
+	local $err = &call_dolibarr_wizard_page(\@params, $step."5", $d, $opts);
 	return (-1, "Dolibarr wizard failed : $err") if ($err);
 	
 	# Remove the installation directory and protect config file.
@@ -324,14 +331,10 @@ 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);
-print STDERR $iout;
-
 if ($ierror) {
 	return $ierror;
 	}
-
 return undef;
 }
 
@@ -347,8 +350,8 @@ local $derr = &delete_script_install_directory($d, $opts);
 return (0, $derr) if ($derr);
 
 # Remove all llx_ tables from the database
-# 4 times because of constraints
-for(my $i=0; $i<4; $i++) {
+# 10 times because of constraints
+for(my $i=0; $i<10; $i++) {
 	&cleanup_script_database($d, $opts->{'db'}, "llx_");
 	}
 
@@ -381,9 +384,10 @@ sub script_dolibarr_check_latest
 {
 local ($ver) = @_;
 local @vers = &osdn_package_versions("dolibarr",
-                $ver >= 3.2 ? "dolibarr\\-(3\\.[0-9\\.]+)\\.tgz" :
-                $ver >= 3.1 ? "dolibarr\\-(3\\.1\\.[0-9\\.]+)\\.tgz" :
-                $ver >= 3 ? "dolibarr\\-(3\\.0\\.[0-9\\.]+)\\.tgz" :
+                $ver >= 3.8 ? "dolibarr\\-(3\\.[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");
 return "Failed to find versions" if (!@vers);