Skip to content
Extraits de code Groupes Projets
Valider 30e9235a rédigé par esj's avatar esj
Parcourir les fichiers

#209 et multi-base: l'instruction Insert sur des dates impose d'utiliser les...

#209 et multi-base: l'instruction Insert sur des dates impose d'utiliser les fonctions d'abstractions pour que PG les reformate à sa manière. En conséquence, comme dans [10131] on rallonge la liste des fonctions d'abstraction de [10113]:
{{{
	'insertq' => fonction d'abstraction de l'insertion 
}}}
En fait la fonction '''sql_insert''' devrait être abandonnée, mais on la garde pour compatibilité au moins provisoirement.

Par ailleurs, le compteur maximal sur les fichiers de logs est à présent différencié par fichier, c'est plus pratique.
parent e77bbdef
Branches
Étiquettes
Aucune requête de fusion associée trouvée
...@@ -101,7 +101,10 @@ function insert_article($id_rubrique) { ...@@ -101,7 +101,10 @@ function insert_article($id_rubrique) {
"($id_rubrique, $id_secteur, 'prepa', NOW(), '" "($id_rubrique, $id_secteur, 'prepa', NOW(), '"
. substr($GLOBALS['meta']['forums_publics'],0,3) . substr($GLOBALS['meta']['forums_publics'],0,3)
. "', '$lang', '$choisie')"); . "', '$lang', '$choisie')");
sql_insert('spip_auteurs_articles', "(id_auteur,id_article)", "('" . $GLOBALS['auteur_session']['id_auteur'] . "','$id_article')");
// controler si le serveur n'a pas renvoye une erreur
if ($id_article > 0)
sql_insert('spip_auteurs_articles', "(id_auteur,id_article)", "('" . $GLOBALS['auteur_session']['id_auteur'] . "','$id_article')");
return $id_article; return $id_article;
} }
......
...@@ -35,7 +35,7 @@ function action_editer_breve_dist() { ...@@ -35,7 +35,7 @@ function action_editer_breve_dist() {
// Envoi depuis le formulaire de creation d'une breve // Envoi depuis le formulaire de creation d'une breve
else if ($arg == 'oui') { else if ($arg == 'oui') {
$id_breve = insert_breve(_request('id_parent')); $id_breve = insert_breve(_request('id_parent'));
revisions_breves($id_breve); if ($id_breve) revisions_breves($id_breve);
} }
// Erreur // Erreur
else{ else{
......
...@@ -126,12 +126,21 @@ function action_editer_message_post_nouveau($type, $dest='', $rv='') ...@@ -126,12 +126,21 @@ function action_editer_message_post_nouveau($type, $dest='', $rv='')
$titre = filtrer_entites(_T('texte_nouveau_message')); $titre = filtrer_entites(_T('texte_nouveau_message'));
$id_message = sql_insert("spip_messages", "(titre, date_heure, statut, type, id_auteur)", "(" . _q($titre) . ", NOW(), '$statut', '$type', $id_auteur)"); $vals = array('titre' => $titre,
'statut' => $statut,
if ($rv) { 'type' => $type,
spip_query("UPDATE spip_messages SET rv='oui', date_heure=" . _q($rv . ' 12:00:00') . ", date_fin= " . _q($rv . ' 13:00:00') . " WHERE id_message = $id_message"); 'id_auteur' => $id_auteur);
if (!$rv)
$vals['date_heure'] = 'NOW()';
else {
$vals['date_heure'] = "$rv 12:00:00";
$vals['date_fin'] = "$rv 13:00:00";
$vals['rv'] = 'oui';
} }
$id_message = sql_insertq("spip_messages", $vals);
if ($type != "affich"){ if ($type != "affich"){
sql_insert('spip_auteurs_messages', sql_insert('spip_auteurs_messages',
"(id_auteur,id_message,vu)", "(id_auteur,id_message,vu)",
......
...@@ -143,7 +143,7 @@ function inscription_nouveau($declaration) ...@@ -143,7 +143,7 @@ function inscription_nouveau($declaration)
$declaration['statut'] = 'nouveau'; $declaration['statut'] = 'nouveau';
$n = sql_insert('spip_auteurs', ('(' .join(',',array_keys($declaration)).')'), ("(" .join(", ",array_map('_q', $declaration)) .")")); $n = sql_insertq('spip_auteurs', $declaration);
$declaration['id_auteur'] = $n; $declaration['id_auteur'] = $n;
......
...@@ -22,11 +22,11 @@ function sql_serveur($ins_sql, $serveur='') { ...@@ -22,11 +22,11 @@ function sql_serveur($ins_sql, $serveur='') {
$desc = spip_connect($serveur); $desc = spip_connect($serveur);
if (function_exists($f = @$desc[$ins_sql])) return $f; if (function_exists($f = @$desc[$ins_sql])) return $f;
include_spip('inc/minipres'); include_spip('inc/minipres');
echo minipres("'$serveur' " ._T('zbug_serveur_indefini') . " ($ins_sql )"); echo minipres("'$serveur' " ._T('zbug_serveur_indefini') . " ($ins_sql)");
exit; exit;
} }
// http://doc.spip.org/@sql_set_connect_charset // http://doc.spip.org/@spip_sql_set_connect_charset
function sql_set_connect_charset($charset,$serveur=''){ function sql_set_connect_charset($charset,$serveur=''){
$f = sql_serveur('set_connect_charset', $serveur); $f = sql_serveur('set_connect_charset', $serveur);
return $f($charset, $serveur); return $f($charset, $serveur);
...@@ -102,6 +102,12 @@ function sql_insert($table, $noms, $valeurs, $desc=array(), $serveur='') ...@@ -102,6 +102,12 @@ function sql_insert($table, $noms, $valeurs, $desc=array(), $serveur='')
return $f($table, $noms, $valeurs, $desc, $serveur); return $f($table, $noms, $valeurs, $desc, $serveur);
} }
function sql_insertq($table, $couples, $desc=array(), $serveur='')
{
$f = sql_serveur('insertq', $serveur);
return $f($table, $couples, $desc, $serveur);
}
// http://doc.spip.org/@sql_update // http://doc.spip.org/@sql_update
function sql_update($table, $exp, $where='', $desc=array(), $serveur='') function sql_update($table, $exp, $where='', $desc=array(), $serveur='')
{ {
......
...@@ -46,6 +46,7 @@ function base_db_mysql_dist($host, $port, $login, $pass, $db='', $prefixe='') { ...@@ -46,6 +46,7 @@ function base_db_mysql_dist($host, $port, $login, $pass, $db='', $prefixe='') {
'fetsel' => 'spip_mysql_fetsel', 'fetsel' => 'spip_mysql_fetsel',
'free' => 'spip_mysql_free', 'free' => 'spip_mysql_free',
'insert' => 'spip_mysql_insert', 'insert' => 'spip_mysql_insert',
'insertq' => 'spip_mysql_insertq',
'listdbs' => 'spip_mysql_listdbs', 'listdbs' => 'spip_mysql_listdbs',
'multi' => 'spip_mysql_multi', 'multi' => 'spip_mysql_multi',
'query' => 'spip_mysql_query', 'query' => 'spip_mysql_query',
...@@ -373,6 +374,15 @@ function spip_mysql_insert($table, $champs, $valeurs, $desc='', $serveur='') { ...@@ -373,6 +374,15 @@ function spip_mysql_insert($table, $champs, $valeurs, $desc='', $serveur='') {
return $r ? $r : (($r===0) ? -1 : 0); return $r ? $r : (($r===0) ? -1 : 0);
} }
function spip_mysql_insertq($table, $couples, $desc=array(), $serveur='') {
foreach ($couples as $champ => $val) {
$couples[$champ]= _q($val);
}
return spip_mysql_insert($table, "(".join(',',array_keys($couples)).")", "(".join(',', $couples).")", $desc, $serveur);
}
// http://doc.spip.org/@spip_mysql_update // http://doc.spip.org/@spip_mysql_update
function spip_mysql_update($table, $champs, $where='', $desc='', $serveur='') { function spip_mysql_update($table, $champs, $where='', $desc='', $serveur='') {
$r = ''; $r = '';
......
...@@ -38,6 +38,7 @@ function base_db_pg_dist($addr, $port, $login, $pass, $db='', $prefixe='') { ...@@ -38,6 +38,7 @@ function base_db_pg_dist($addr, $port, $login, $pass, $db='', $prefixe='') {
'fetsel' => 'spip_pg_fetsel', 'fetsel' => 'spip_pg_fetsel',
'free' => 'spip_pg_free', 'free' => 'spip_pg_free',
'insert' => 'spip_pg_insert', 'insert' => 'spip_pg_insert',
'insertq' => 'spip_pg_insertq',
'listdbs' => 'spip_pg_listdbs', 'listdbs' => 'spip_pg_listdbs',
'multi' => 'spip_pg_multi', 'multi' => 'spip_pg_multi',
'query' => 'spip_pg_query', 'query' => 'spip_pg_query',
...@@ -359,16 +360,32 @@ function spip_pg_insert($table, $champs, $valeurs, $desc=array(), $serveur='') { ...@@ -359,16 +360,32 @@ function spip_pg_insert($table, $champs, $valeurs, $desc=array(), $serveur='') {
if ($prefixe) $table = preg_replace('/^spip/', $prefixe, $table); if ($prefixe) $table = preg_replace('/^spip/', $prefixe, $table);
$r = pg_query($link, $q="INSERT INTO $table $champs VALUES $valeurs $ret"); $r = pg_query($link, $q="INSERT INTO $table $champs VALUES $valeurs $ret");
if ($r) { if ($r) {
if (!$ret) return 0; if (!$ret) return 0;
if ($r = pg_fetch_array($r, NULL, PGSQL_NUM)) if ($r2 = pg_fetch_array($r, NULL, PGSQL_NUM))
return $r[0]; return $r2[0];
} }
spip_log("Erreur $q", 'pg'); // trace a minima spip_log("Erreur $q '$r' '$r2'", 'pg'); // trace a minima
return -1; return -1;
} }
function spip_pg_insertq($table, $couples, $desc=array(), $serveur='') {
if (!$desc) {
global $tables_principales;
include_spip('base/serial');
$desc = @$tables_principales[$table];
}
if (!$desc) die("insertion sans description");
$fields = $desc['field'];
foreach ($couples as $champ => $val) {
$couples[$champ]= spip_pg_cite($val, $fields[$champ]);
}
return spip_pg_insert($table, "(".join(',',array_keys($couples)).")", "(".join(',', $couples).")", $desc, $serveur);
}
// http://doc.spip.org/@spip_pg_update // http://doc.spip.org/@spip_pg_update
function spip_pg_update($table, $champs, $where='', $desc=array()) { function spip_pg_update($table, $champs, $where='', $desc=array()) {
...@@ -441,6 +458,7 @@ function spip_pg_replace($table, $values, $desc, $serveur='') { ...@@ -441,6 +458,7 @@ function spip_pg_replace($table, $values, $desc, $serveur='') {
return 0; return 0;
} }
$set = join(',', $noprims); $set = join(',', $noprims);
if ($set) { if ($set) {
$set = pg_query($link, $q = "UPDATE $table SET $set WHERE $where"); $set = pg_query($link, $q = "UPDATE $table SET $set WHERE $where");
if (!$set) { if (!$set) {
...@@ -450,6 +468,7 @@ function spip_pg_replace($table, $values, $desc, $serveur='') { ...@@ -450,6 +468,7 @@ function spip_pg_replace($table, $values, $desc, $serveur='') {
$set = pg_affected_rows($set); $set = pg_affected_rows($set);
} }
} }
if (!$set) { if (!$set) {
$set = pg_query($link, $q = "INSERT INTO $table (" . join(',',array_keys($values)) . ') VALUES (' .join(',', $values) . ')'); $set = pg_query($link, $q = "INSERT INTO $table (" . join(',',array_keys($values)) . ') VALUES (' .join(',', $values) . ')');
if (!$set) { if (!$set) {
......
...@@ -41,6 +41,7 @@ function exec_message_edit_dist() ...@@ -41,6 +41,7 @@ function exec_message_edit_dist()
$expediteur = $row["id_auteur"]; $expediteur = $row["id_auteur"];
if (!($expediteur == $connect_id_auteur OR ($type == 'affich' AND $connect_statut == '0minirezo'))) { if (!($expediteur == $connect_id_auteur OR ($type == 'affich' AND $connect_statut == '0minirezo'))) {
include_spip('inc/minipres');
echo minipres(); echo minipres();
exit; exit;
} }
......
...@@ -317,7 +317,7 @@ function conserver_original($id_forum) { ...@@ -317,7 +317,7 @@ function conserver_original($id_forum) {
if ($t) { if ($t) {
unset($t['id_forum']); unset($t['id_forum']);
include_spip('base/abstract_sql'); include_spip('base/abstract_sql');
$id_copie = sql_insert('spip_forum', "(" . join(',',array_keys($t)).")", "(" . join(',',array_map('_q', $t)). ")"); $id_copie = sql_insertq('spip_forum', $t);
if ($id_copie) { if ($id_copie) {
spip_query("UPDATE spip_forum SET id_parent="._q($id_forum).", statut='original' WHERE id_forum=$id_copie"); spip_query("UPDATE spip_forum SET id_parent="._q($id_forum).", statut='original' WHERE id_forum=$id_copie");
return ''; // pas d'erreur return ''; // pas d'erreur
......
...@@ -138,9 +138,7 @@ function import_replace($values, $table, $desc, $request, $atts='') { ...@@ -138,9 +138,7 @@ function import_replace($values, $table, $desc, $request, $atts='') {
if (!sql_updateq($table, $values, $where)) { if (!sql_updateq($table, $values, $where)) {
$GLOBALS['erreur_restauration'] = sql_error(); $GLOBALS['erreur_restauration'] = sql_error();
} }
}else{ } else sql_insertq($table, $valeurs);
sql_insert($table, "(".join(',',array_keys($values)).")", "(".join(',',array_map('_q', $values)).")");
}
} }
} }
} }
......
...@@ -150,9 +150,9 @@ function pipeline($action, $val=null) { ...@@ -150,9 +150,9 @@ function pipeline($action, $val=null) {
// //
// http://doc.spip.org/@spip_log // http://doc.spip.org/@spip_log
function spip_log($message, $logname='spip') { function spip_log($message, $logname='spip') {
static $compteur; static $compteur = array();
global $nombre_de_logs, $taille_des_logs; global $nombre_de_logs, $taille_des_logs;
if ($compteur++ > 100 || !$nombre_de_logs || !$taille_des_logs) return; if ($compteur[$logname]++ > 100 || !$nombre_de_logs || !$taille_des_logs) return;
$rotate = 0; $rotate = 0;
$pid = '(pid '.@getmypid().')'; $pid = '(pid '.@getmypid().')';
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter