4.1) // - le tableau des des post-conditions a remplir (Having) // - le nom de la table (pour le message d'erreur e'ventuel) // - le nom de la boucle (pour le message d'erreur e'ventuel) // - le serveur sollicite (pour retrouver la connexion) // http://doc.spip.org/@spip_abstract_select function spip_abstract_select ( $select = array(), $from = array(), $where = array(), $groupby = '', $orderby = array(), $limit = '', $sousrequete = '', $having = array(), $table = '', $id = '', $serveur='') { $f = spip_abstract_serveur('select', $serveur); return $f($select, $from, $where, $groupby, $orderby, $limit, $sousrequete, $having, $table, $id, $serveur); } // http://doc.spip.org/@spip_abstract_fetch function spip_abstract_fetch($res, $serveur='') { $f = spip_abstract_serveur('fetch', $serveur); return $f($res); } // http://doc.spip.org/@spip_abstract_count function spip_abstract_count($res, $serveur='') { $f = spip_abstract_serveur('count', $serveur); return $f($res); } // http://doc.spip.org/@spip_abstract_free function spip_abstract_free($res, $serveur='') { $f = spip_abstract_serveur('free', $serveur); return $f($res); } // http://doc.spip.org/@spip_abstract_insert function spip_abstract_insert($table, $noms, $valeurs, $serveur='') { $f = spip_abstract_serveur('insert', $serveur); return $f($table, $noms, $valeurs); } // http://doc.spip.org/@spip_abstract_showtable function spip_abstract_showtable($table, $serveur='', $table_spip = false) { if ($table_spip){ if ($GLOBALS['table_prefix']) $table_pref = $GLOBALS['table_prefix']."_"; else $table_pref = ""; $table = preg_replace('/^spip_/', $table_pref, $table); } $f = spip_abstract_serveur('showtable', $serveur); return $f($table); } // http://doc.spip.org/@spip_abstract_create function spip_abstract_create($nom, $champs, $cles, $autoinc=false, $temporary=false, $serveur='') { $f = spip_abstract_serveur('create', $serveur); return $f($nom, $champs, $cles, $autoinc, $temporary); } # une composition tellement frequente... // http://doc.spip.org/@spip_abstract_fetsel function spip_abstract_fetsel( $select = array(), $from = array(), $where = array(), $groupby = '', $orderby = array(), $limit = '', $sousrequete = '', $having = array(), $table = '', $id = '', $serveur='') { return spip_abstract_fetch(spip_abstract_select( $select, $from, $where, $groupby, $orderby, $limit, $sousrequete, $having, $table, $id, $serveur), $serveur); } // // IN (...) est limite a 255 elements, d'ou cette fonction assistante // // http://doc.spip.org/@calcul_mysql_in function calcul_mysql_in($val, $valeurs, $not='') { if (!strlen(trim($valeurs))) return ($not ? "0=0" : '0=1'); $n = $i = 0; $in_sql =""; while ($n = strpos($valeurs, ',', $n+1)) { if ((++$i) >= 255) { $in_sql .= "($val $not IN (" . substr($valeurs, 0, $n) . "))\n" . ($not ? "AND\t" : "OR\t"); $valeurs = substr($valeurs, $n+1); $i = $n = 0; } } $in_sql .= "($val $not IN ($valeurs))"; return "($in_sql)"; } // Une version d'abstract_showtable prenant en compte les tables predefinies // Faudrait tester un jour si ca accelere vraiment. // http://doc.spip.org/@description_table function description_table($nom){ global $tables_principales, $tables_auxiliaires, $table_des_tables, $tables_des_serveurs_sql; static $tables_externes = array(); if (isset($tables_externes[$nom])) return array($nom, $tables_externes[$nom]); $nom_table = $nom; if (in_array($nom, $table_des_tables)) $nom_table = 'spip_' . $nom; include_spip('base/serial'); if (isset($tables_principales[$nom_table])) return array($nom_table, $tables_principales[$nom_table]); include_spip('base/auxiliaires'); $nom_table = 'spip_' . $nom; if (isset($tables_auxiliaires[$nom_table])) return array($nom_table, $tables_auxiliaires[$nom_table]); if ($desc = spip_abstract_showtable($nom, '', true)) if (isset($desc['field'])) { $tables_externes[$nom] = $desc; return array($nom, $desc); } return array($nom,array()); } ?>