"; ecrire_fichier($nom, $texte); } /** * Retourne le code source d'un fichier de connexion à une base de données * * Le code est un appel à la fonction spip_connect_db() * * @see spip_connect_db() * * @internal * Attention etape_ldap4 suppose qu'il n'y aura qu'un seul appel de fonction * dans le fichier produit. * * @param string $adr Adresse de la base de données {@example 'localhost'} * @param string $port Numéro de port * @param string $login Login de connexion * @param string $pass Mot de passe de connexion * @param string $base Nom de la base de données * @param string $type Moteur SQL {@example 'sqlite3', 'mysql'} * @param string $pref Préfixe des tables {@example 'spip'} * @param string $ldap Type d'authentification (cas si 'ldap') * @param string $charset Charset de la connexion SQL * @return string * Texte du fichier de connexion * **/ function install_connexion($adr, $port, $login, $pass, $base, $type, $pref, $ldap = '', $charset = '') { $adr = addcslashes($adr, "'\\"); $port = addcslashes($port, "'\\"); $login = addcslashes($login, "'\\"); $pass = addcslashes($pass, "'\\"); $base = addcslashes($base, "'\\"); $type = addcslashes($type, "'\\"); $pref = addcslashes($pref, "'\\"); $ldap = addcslashes($ldap, "'\\"); $charset = addcslashes($charset, "'\\"); return "\$GLOBALS['spip_connect_version'] = 0.8;\n" . "spip_connect_db(" . "'$adr','$port','$login','$pass','$base'" . ",'$type', '$pref','$ldap','$charset');\n"; } /** * Analyse un fichier de connexion à une base de données * * Le fichier contient normalement le résultat de la fonction install_connexion(). * L'analyse tient également compte des syntaxes des versions précédentes. * * @param string $file * Chemin du fichier de connexion à analyser * @return array * Tableau des informations sur la connexion **/ function analyse_fichier_connection($file) { $s = @join('', file($file)); if (preg_match("#mysql_connect\([\"'](.*)[\"'],[\"'](.*)[\"'],[\"'](.*)[\"']\)#", $s, $regs)) { array_shift($regs); return $regs; } else { $ar = '\s*\'([^\']*)\''; $r = '\s*,' . $ar; $r = "#spip_connect_db[(]$ar$r$r$r$r(?:$r(?:$r(?:$r(?:$r)?)?)?)?#"; if (preg_match($r, $s, $regs)) { $regs[2] = $regs[1] . (!$regs[2] ? '' : ":" . $regs[2] . ";"); array_shift($regs); array_shift($regs); return $regs; } } spip_log("$file n'est pas un fichier de connexion"); return array(); } /** * Liste les connecteurs aux bases SQL disponibles * * Dans le code SPIP ces connecteurs sont souvent appelés $connect ou $serveur * * @example * $bases = bases_referencees(_FILE_CONNECT_TMP); * * @param string $exclu * Exclure un connecteur particulier (nom du fichier) * @return array * Liste des noms de connecteurs **/ 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://code.spip.net/@tester_compatibilite_hebergement function tester_compatibilite_hebergement() { $err = array(); $p = phpversion(); if (version_compare($p, _PHP_MIN, '<')) { $err[] = _T('install_php_version', array('version' => $p, 'minimum' => _PHP_MIN)); } // Si on n'a pas la bonne version de PHP, c'est la fin if ($err) { die("
' . _T('install_echec_annonce') . "
' . _T('install_echec_annonce') . "
>\" />
\n"; } // http://code.spip.net/@info_progression_etape function info_progression_etape($en_cours, $phase, $dir, $erreur = false) { //$en_cours = _request('etape')?_request('etape'):""; $liste = find_all_in_path($dir, $phase . '(([0-9])+|fin)[.]php$'); $debut = 1; $etat = "ok"; $last = count($liste); // $texte_etat = array('ok'=>'OK','encours'=>_T('en_cours'),'todo'=>_T('todo')); $intitule_etat["etape_"][1] = typo(_T('info_connexion_base_donnee')); $intitule_etat["etape_"][2] = typo(_T('menu_aide_installation_choix_base')); $intitule_etat["etape_"][3] = typo(_T('info_informations_personnelles')); $intitule_etat["etape_"][4] = typo(_T('info_derniere_etape')); $intitule_etat["etape_ldap"][1] = typo(_T('titre_connexion_ldap')); $intitule_etat["etape_ldap"][2] = typo(_T('titre_connexion_ldap')); $intitule_etat["etape_ldap"][3] = typo(_T('info_chemin_acces_1')); $intitule_etat["etape_ldap"][4] = typo(_T('info_reglage_ldap')); $intitule_etat["etape_ldap"][5] = typo(_T('info_ldap_ok')); // $aff_etapes = ""; $aff_etapes = "" . _T('avis_connexion_echec_1') . "
" . _T('avis_connexion_echec_2') . "
" . _T('avis_connexion_echec_3') . "
") : "") . ($jquery ? http_script('', 'jquery.js') : '') . http_script(' jQuery(function($) { $("input[type=hidden][name=server_db]").each(function(){ if ($(this).attr("value").match("sqlite*")){ $("#install_adresse_base_hebergeur,#install_login_base_hebergeur,#install_pass_base_hebergeur").hide(); } }); if ($("input[name=server_db][checked]").attr("value").match("sqlite*")) $("#install_adresse_base_hebergeur,#install_login_base_hebergeur,#install_pass_base_hebergeur").hide(); else $("#install_adresse_base_hebergeur,#install_login_base_hebergeur,#install_pass_base_hebergeur").show(); $("input[name=server_db]").each(function(){ $(this).on("change",function(){ if ($(this).prop("checked") && $(this).attr("value").match("sqlite*")) { $("#install_adresse_base_hebergeur,#install_login_base_hebergeur,#install_pass_base_hebergeur").hide(); } if ($(this).prop("checked") && !$(this).attr("value").match("sqlite*")) { $("#install_adresse_base_hebergeur,#install_login_base_hebergeur,#install_pass_base_hebergeur").show(); } }); }); });') . ($server_db ? '' . (($predef[0]) ? ('' . _T('texte_connexion_mysql') . '
' . ($predef[1] ? '