3, '_bases_deja' => $deja, '_bases_prop' => defined('_DECLARER_serveur_db')?liste_bases(_DECLARER_serveur_db):'', '_tables' => (defined('_DECLARER_serveur_db') AND defined('_DECLARER_choix_db'))? $tables = sql_alltable('%', _DECLARER_serveur_db) : array(), 'main_db' => '', '_serveurs' => liste_serveurs(), 'sql_serveur_db' => 'sqlite3', // valeur par defaut 'adresse_db' => $adresse_db, 'login_db' => '', 'pass_db' => '', 'choix_db' => '', 'table_new' => '', 'nom_connect' => $nom_connect, ); return $valeurs; } function liste_serveurs() { $options = array(); $dir = _DIR_RESTREINT . 'req/'; $d = @opendir($dir); if (!$d) return array(); while ($f = readdir($d)) { if ((preg_match('/^(.*)[.]php$/', $f, $s)) AND is_readable($f = $dir . $f)) { require_once($f); $s = $s[1]; $v = 'spip_versions_' . $s; if (function_exists($v) AND $v()) { $options[$s] = "install_select_type_$s"; } else spip_log("$s: portage indisponible"); } } ksort($options); return $options; } function liste_bases($server_db){ if (is_null($server_db) OR !$result = sql_listdbs($server_db)) return ''; $noms = array(); // si sqlite : result est deja un tableau if (is_array($result)){ $noms = $result; } else { while ($row = sql_fetch($result, $server_db)) { $noms[] = reset($row); } } return $noms; } function formulaires_declarer_bases_verifier_1_dist(){ $erreurs = array(); list($def_adresse_db, $def_login_db, $def_pass_db, $sel_db, $def_serveur_db) = analyse_fichier_connection(_FILE_CONNECT); if (!$adresse_db = _request('adresse_db')){ if (defined('_INSTALL_HOST_DB')) $adresse_db =_INSTALL_HOST_DB; else $adresse_db = $def_adresse_db; } if (!$serveur_db =_request('sql_serveur_db')){ if (defined('_INSTALL_SERVER_DB')) $serveur_db = _INSTALL_SERVER_DB; else $serveur_db = $def_serveur_db; } $login_db = $pass_db = ""; if (!preg_match(',^sqlite,i',$serveur_db)){ if (!$login_db = _request('login_db')){ if (defined('_INSTALL_USER_DB')) $login_db = _INSTALL_USER_DB; else $login_db = $def_login_db; } if (!$pass_db = _request('pass_db')){ if (defined('_INSTALL_PASS_DB')) $pass_db = _INSTALL_PASS_DB; else $pass_db = $def_pass_db; } } $link = spip_connect_db($adresse_db, '', $login_db, $pass_db, '@test@', $serveur_db); if ($link) { $GLOBALS['connexions'][$serveur_db][$GLOBALS['spip_sql_version']] = $GLOBALS['spip_' . $serveur_db .'_functions_' . $GLOBALS['spip_sql_version']]; $GLOBALS['connexions'][$serveur_db] = $link; define('_DECLARER_serveur_db',$serveur_db); define('_DECLARER_adresse_db',$adresse_db); define('_DECLARER_login_db',$login_db); define('_DECLARER_pass_db',$pass_db); // si on est sur le meme serveur que connect.php // indiquer quelle est la db utilisee pour l'exclure des choix possibles if ($serveur_db==$def_serveur_db AND $adresse_db==$def_adresse_db) set_request('main_db',$sel_db); else set_request('main_db',''); } else { $erreurs['message_erreur'] = _T('avis_connexion_echec_1'); } return $erreurs; } function formulaires_declarer_bases_verifier_2_dist(){ $erreurs = array(); $choix_db = _request('choix_db'); if ($choix_db=='-1') $choix_db = _request('table_new'); if (!$choix_db) $erreurs['choix_db']=_T('info_obligatoire'); else { define('_ECRIRE_INSTALL',1); // hackons sqlite if (!sql_selectdb($choix_db, _DECLARER_serveur_db)) $erreurs['choix_db']=_T('avis_base_inaccessible',array('base'=>$choix_db)); else define('_DECLARER_choix_db',$choix_db); } return $erreurs; } function formulaires_declarer_bases_verifier_3_dist(){ $erreurs = array(); $nom_connect = _request('nom_connect'); if (!$nom_connect) $erreurs['nom_connect']=_T('info_obligatoire'); else { // securite : le nom doit etre un mot sans caracteres speciaux $f = preg_replace(',[^\w],','',$nom_connect); if ($f!==$nom_connect) $erreurs['nom_connect']=_T('erreur_nom_connect_incorrect'); elseif(file_exists(_DIR_CONNECT . $nom_connect. '.php')) $erreurs['nom_connect']=_T('erreur_connect_deja_existant'); else define('_DECLARER_nom_connect',$nom_connect); } return $erreurs; } function formulaires_declarer_bases_traiter_dist(){ $adresse_db = _DECLARER_adresse_db; if (preg_match(',(.*):(.*),', $adresse_db, $r)) list(,$adresse_db, $port) = $r; else $port = ''; $adresse_db = addcslashes($adresse_db,"'\\"); $port = addcslashes($port,"'\\"); $login_db = addcslashes(_DECLARER_login_db,"'\\"); $pass_db = addcslashes(_DECLARER_pass_db,"'\\"); $sup_db = addcslashes(_DECLARER_choix_db,"'\\"); $server_db = addcslashes(_DECLARER_serveur_db,"'\\"); $conn = install_mode_appel($server_db) . "spip_connect_db(" . "'$adresse_db','$port','$login_db'," . "'$pass_db','$sup_db'" . ",'$server_db', '');\n"; install_fichier_connexion(_DIR_CONNECT . _DECLARER_nom_connect . '.php', $conn); return array('message_ok'=>_T('install_connect_ok',array('connect' => ""._DECLARER_nom_connect.""))); }