function liste_tables_en_base($name) { $res = sql_alltable(); $c = "type='checkbox' checked='checked'"; foreach ($res as $k => $t) { $res[$k] = "<input $c value='$t' id='$name_$t' name='$name" . "[]' />\n" . $t . " (" . sql_countsel($t) . ")"; } return $res; }
function formulaires_declarer_bases_charger_dist() { list($adresse_db, $login_db, $pass_db, $sel, $server_db) = analyse_fichier_connection(_FILE_CONNECT); $deja = bases_referencees(_FILE_CONNECT); // proposer un nom de connect si pas encore saisi $nom_connect = ""; if (defined('_DECLARER_choix_db')) { $nom_connect = _DECLARER_choix_db; $n = ""; while (in_array($nom_connect . $n, $deja)) { $n = $n ? $n + 1 : 1; } $nom_connect = $nom_connect . $n; } $valeurs = array('_etapes' => 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', 'adresse_db' => $adresse_db, 'login_db' => '', 'pass_db' => '', 'choix_db' => '', 'table_new' => '', 'nom_connect' => $nom_connect); return $valeurs; }
function install_bases_sup($adresse_db, $login_db, $pass_db, $server_db, $sup_db){ if (!($GLOBALS['connexions'][$server_db] = spip_connect_db($adresse_db, 0, $login_db, $pass_db, '', $server_db))) return "<!-- connection perdue -->"; $GLOBALS['connexions'][$server_db][$GLOBALS['spip_sql_version']] = $GLOBALS['spip_' . $server_db .'_functions_' . $GLOBALS['spip_sql_version']]; if (!sql_selectdb($sup_db, $server_db)) return "<!-- base inaccessible -->"; $tables = sql_alltable('%', $server_db); if (!$tables) $res = _T('install_pas_table'); else { $res = _T('install_tables_base') . "<ol style='text-align: left'>\n<li>" . join("</li>\n<li>", $tables) . "</li>\n</ol>\n"; } if (preg_match(',(.*):(.*),', $adresse_db, $r)) list(,$adresse_db, $port) = $r; else $port = ''; $adresse_db = addcslashes($adresse_db,"'\\"); $port = addcslashes($port,"'\\"); $login_db = addcslashes($login_db,"'\\"); $pass_db = addcslashes($pass_db,"'\\"); $sup_db = addcslashes($sup_db,"'\\"); $server_db = addcslashes($server_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 . $sup_db . '.php', $conn); return '<div style="background-color: #eeeeee">' . $res . '</div>'; }
/** * Lister toutes les tables d'un serveur * en excluant eventuellement une liste fournie * * @param string $serveur * @param array $tables * @param array $exclude * @param bool $affiche_vrai_prefixe * @return array */ function base_lister_toutes_tables($serveur = '', $tables = array(), $exclude = array(), $affiche_vrai_prefixe = false) { spip_connect($serveur); $connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0]; $prefixe = $connexion['prefixe']; $p = '/^' . $prefixe . '/'; $res = $tables; foreach (sql_alltable(null, $serveur) as $t) { if (preg_match($p, $t)) { $t1 = preg_replace($p, 'spip', $t); if (!in_array($t1, $tables) and !in_array($t1, $exclude)) { $res[] = $affiche_vrai_prefixe ? $t : $t1; } } } sort($res); return $res; }
function lister_tables_spip($serveur=''){ static $tables = array(); if (!isset($tables[$serveur])){ $tables[$serveur] = array(); if (!function_exists("sql_alltable")) include_spip("base/abstract_sql"); $ts = sql_alltable(null,$serveur); // toutes les tables "spip_" (ou prefixe perso) $connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0]; $spip = $connexion['prefixe'] . '_'; foreach ($ts as $t){ $t = substr($t,strlen($spip)); $tables[$serveur]["spip_$t"] = $t; } } return $tables[$serveur]; }
/** * Liste les id d'un type donne utilisant une composition donnee * * @param string $type * @param string $composition * @return array */ function compositions_lister_utilisations($type,$composition){ $table_sql = table_objet_sql($type); if (!in_array($table_sql, sql_alltable())) { return; } $trouver_table = charger_fonction('trouver_table', 'base'); $desc = $trouver_table($table_sql); $_id_table_objet = id_table_objet($type); $titre = isset($desc['titre']) ? $desc['titre'] : "'' AS titre"; return sql_allfetsel("$_id_table_objet as id, $titre", $table_sql, "composition=".sql_quote($composition)); }
function lister_toutes_tables($serveur) { static $tables = array(); if (!isset($tables[$serveur])) { $tables[$serveur] = array(); if (!function_exists("sql_alltable")) { include_spip("base/abstract_sql"); } $ts = sql_alltable('%', $serveur); // toutes les tables foreach ($ts as $t) { $tables[$serveur][$t] = $t; } } return $tables[$serveur]; }
function controle_tables_en_base($name, $check) { $p = '/^' . $GLOBALS['table_prefix'] . '/'; $res = $check; foreach(sql_alltable() as $t) { $t = preg_replace($p, 'spip', $t); if (!in_array($t, $check)) $res[]= $t; } sort($res); foreach ($res as $k => $t) { $res[$k] = "<input type='checkbox' value='$t' name='$name" . "[]'" . (in_array($t, $check) ? " checked='checked'" : '') . "/>\n" . $t . " (" . sql_countsel($t) . ")"; } return $res; }