X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fecrire%2Finc%2Finstall.php;fp=www%2Fecrire%2Finc%2Finstall.php;h=f9cd3646d667ecefd8a0410d0a1ce17be5b6b05e;hp=0000000000000000000000000000000000000000;hb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;hpb=aaf970bf4cdaf76689ecc10609048e18d073820c
diff --git a/www/ecrire/inc/install.php b/www/ecrire/inc/install.php
new file mode 100644
index 0000000..f9cd364
--- /dev/null
+++ b/www/ecrire/inc/install.php
@@ -0,0 +1,467 @@
+";
+
+ ecrire_fichier($nom, $texte);
+}
+
+// Attention etape_ldap4 suppose qu'il n'y aura qu'un seul appel de fonction
+// dans le fichier produit.
+
+// http://doc.spip.org/@install_connexion
+function install_connexion($adr, $port, $login, $pass, $base, $type, $pref, $ldap='')
+{
+ $adr = addcslashes($adr,"'\\");
+ $port = addcslashes($port,"'\\");
+ $login = addcslashes($login,"'\\");
+ $pass = addcslashes($pass,"'\\");
+ $base = addcslashes($base,"'\\");
+ $type = addcslashes($type,"'\\");
+ $pref = addcslashes($pref,"'\\");
+ $ldap = addcslashes($ldap,"'\\");
+ return "\$GLOBALS['spip_connect_version'] = 0.7;\n"
+ . "spip_connect_db("
+ . "'$adr','$port','$login','$pass','$base'"
+ . ",'$type', '$pref','$ldap');\n";
+}
+
+// Analyse si un fichier contient le resultat de la fonction install_connexion
+// y compris ce qu'elle produisait dans les versions precedentes
+
+// http://doc.spip.org/@analyse_fichier_connection
+function analyse_fichier_connection($file)
+{
+ $s = @join('', file($file));
+ if (preg_match("#mysql_connect\([\"'](.*)[\"'],[\"'](.*)[\"'],[\"'](.*)[\"']\)#", $s, $regs)) {
+ array_shift($regs);
+ return $regs;
+ } else {
+ $arg = '\s*\'([^\']*)\'\s*,';
+ if (preg_match("#spip_connect_db\($arg$arg$arg$arg\s*'([^']*)'\s*(?:,\s*'([^']*))?#", $s, $regs)) {
+ $regs[2] = $regs[1] . (!$regs[2] ? '' : ":$port_db;");
+ array_shift($regs);
+ array_shift($regs);
+ return $regs;
+ }
+ }
+ spip_log("$file n'est pas un fichier de connexion");
+ return '';
+}
+
+// http://doc.spip.org/@bases_referencees
+function bases_referencees($exclu='')
+{
+ $tables = array();
+ foreach(preg_files(_DIR_CONNECT, '.php$') as $f) {
+ if ($f != $exclu AND analyse_fichier_connection($f))
+ $tables[]= basename($f, '.php');
+ }
+ return $tables;
+}
+
+
+function install_mode_appel($server_db, $tout=true)
+{
+ return ($server_db != 'mysql') ? ''
+ : (($tout ? test_rappel_nom_base_mysql($server_db) : '')
+ . test_sql_mode_mysql($server_db) );
+}
+
+//
+// Verifier que l'hebergement est compatible SPIP ... ou l'inverse :-)
+// (sert a l'etape 1 de l'installation)
+// http://doc.spip.org/@tester_compatibilite_hebergement
+function tester_compatibilite_hebergement() {
+ $err = array();
+
+ $p = phpversion();
+ if (preg_match(',^([0-9]+)\.([0-9]+)\.([0-9]+),', $p, $regs)) {
+ $php = array($regs[1], $regs[2], $regs[3]);
+ $m = '4.0.8';
+ $min = explode('.', $m);
+ if ($php[0]<$min[0]
+ OR ($php[0]==$min[0] AND $php[1]<$min[1])
+ OR ($php[0]==$min[0] AND $php[1]==$min[1] AND $php[2]<$min[2]))
+ $err[] = _T('install_php_version', array('version' => $p, 'minimum' => $m));
+ }
+
+ // Il faut une base de donnees tout de meme ...
+ if (!function_exists('mysql_query')
+ AND !function_exists('pg_connect')
+ AND !function_exists('sqlite_open'))
+ $err[] = _T('install_extension_php_obligatoire')
+ . " MYSQL"
+ . "| PostgreSQL"
+ . "| SQLite";
+
+ // et il faut preg
+ if (!function_exists('preg_match_all'))
+ $err[] = _T('install_extension_php_obligatoire')
+ . " PCRE";
+
+ // et surtout pas ce mbstring.overload
+ if ($a = @ini_get('mbstring.func_overload'))
+ $err[] = _T('install_extension_mbstring')
+ . "mbstring.func_overload=$a - mb_string. ";
+
+ if ($err) {
+ echo "
"._T('avis_attention').'
'._T('install_echec_annonce')."
";
+ while (list(,$e) = each ($err))
+ echo "
$e
\n";
+
+ # a priori ici on pourrait die(), mais il faut laisser la possibilite
+ # de forcer malgre tout (pour tester, ou si bug de detection)
+ echo "