Skip to content
Extraits de code Groupes Projets
Valider e4bb0f9c rédigé par Fil's avatar Fil
Parcourir les fichiers

rendre un peu plus generique le systeme d'edition des auteurs d'un objet (on...

rendre un peu plus generique le systeme d'edition des auteurs d'un objet (on pourra comme ca le faire marcher sur acces_restreint)
parent 94568883
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -63,11 +63,12 @@ function action_editer_auteurs_dist() { ...@@ -63,11 +63,12 @@ function action_editer_auteurs_dist() {
// http://doc.spip.org/@supprimer_auteur_et_rediriger // http://doc.spip.org/@supprimer_auteur_et_rediriger
function supprimer_auteur_et_rediriger($type, $id, $id_auteur, $redirect) function supprimer_auteur_et_rediriger($type, $id, $id_auteur, $redirect)
{ {
$jointure = table_jointure('auteur', $type);
if (preg_match(',^[a-z]*$,',$type)){ if (preg_match(',^[a-z]*$,',$type)){
spip_query("DELETE FROM spip_auteurs_{$type}s WHERE id_auteur="._q($id_auteur)." AND id_{$type}="._q($id)); spip_query("DELETE FROM spip_{$jointure} WHERE id_auteur="._q($id_auteur)." AND id_{$type}="._q($id));
if ($GLOBALS['meta']['activer_moteur'] == 'oui') { if ($GLOBALS['meta']['activer_moteur'] == 'oui') {
include_spip("inc/indexation"); include_spip("inc/indexation");
marquer_indexer("spip_{$type}s", $id); marquer_indexer("spip_".table_objet($type), $id);
} }
} }
...@@ -77,14 +78,15 @@ function supprimer_auteur_et_rediriger($type, $id, $id_auteur, $redirect) ...@@ -77,14 +78,15 @@ function supprimer_auteur_et_rediriger($type, $id, $id_auteur, $redirect)
// http://doc.spip.org/@ajouter_auteur_et_rediriger // http://doc.spip.org/@ajouter_auteur_et_rediriger
function ajouter_auteur_et_rediriger($type, $id, $id_auteur, $redirect) function ajouter_auteur_et_rediriger($type, $id, $id_auteur, $redirect)
{ {
$jointure = table_jointure('auteur', $type);
if (preg_match(',^[a-z]*$,',$type)){ if (preg_match(',^[a-z]*$,',$type)){
$res = spip_query("SELECT id_$type FROM spip_auteurs_{$type}s WHERE id_auteur=" . _q($id_auteur) . " AND id_{$type}=" . $id); $res = spip_query("SELECT id_$type FROM spip_{$jointure} WHERE id_auteur=" . _q($id_auteur) . " AND id_{$type}=" . $id);
if (!spip_num_rows($res)) if (!spip_num_rows($res))
spip_abstract_insert("spip_auteurs_{$type}s", "(id_auteur,id_{$type})", "($id_auteur,$id)"); spip_abstract_insert("spip_{$jointure}", "(id_auteur,id_{$type})", "($id_auteur,$id)");
if ($GLOBALS['meta']['activer_moteur'] == 'oui') { if ($GLOBALS['meta']['activer_moteur'] == 'oui') {
include_spip("inc/indexation"); include_spip("inc/indexation");
marquer_indexer("spip_{$type}s", $id); marquer_indexer("spip_".table_objet($type), $id);
} }
} }
......
...@@ -131,7 +131,8 @@ function determiner_auteurs_objet($type, $id, $cond='', $limit='') ...@@ -131,7 +131,8 @@ function determiner_auteurs_objet($type, $id, $cond='', $limit='')
$les_auteurs = array(); $les_auteurs = array();
if (!preg_match(',^[a-z]*$,',$type)) return $les_auteurs; if (!preg_match(',^[a-z]*$,',$type)) return $les_auteurs;
$result = spip_query("SELECT id_auteur FROM spip_auteurs_{$type}s WHERE id_{$type}="._q($id) $jointure = table_jointure('auteur', $type);
$result = spip_query("SELECT id_auteur FROM spip_{$jointure} WHERE id_{$type}="._q($id)
. ($cond ? " AND $cond" : '') . ($cond ? " AND $cond" : '')
. ($limit? " LIMIT $limit": '') . ($limit? " LIMIT $limit": '')
); );
...@@ -260,9 +261,9 @@ function ajouter_auteurs_objet($type, $id, $cond_les_auteurs,$script_edit, $arg_ ...@@ -260,9 +261,9 @@ function ajouter_auteurs_objet($type, $id, $cond_les_auteurs,$script_edit, $arg_
if (!$determiner_non_auteurs = charger_fonction('determiner_non_auteurs_'.$type,'inc',true)) if (!$determiner_non_auteurs = charger_fonction('determiner_non_auteurs_'.$type,'inc',true))
$determiner_non_auteurs = 'determiner_non_auteurs'; $determiner_non_auteurs = 'determiner_non_auteurs';
$query = $determiner_non_auteurs($type, $id, $cond_les_auteurs, "statut, nom"); $query = $determiner_non_auteurs($type, $id, $cond_les_auteurs, "statut, nom");
if (!$num = spip_num_rows($query)) return ''; if (!$num = spip_num_rows($query)) return '';
$js = "findObj_forcer('valider_ajouter_auteur').style.visibility='visible';"; $js = "findObj_forcer('valider_ajouter_auteur').style.visibility='visible';";
$text = "<span class='verdana1'><b>" $text = "<span class='verdana1'><b>"
......
...@@ -237,6 +237,10 @@ function racine_forum($id_forum){ ...@@ -237,6 +237,10 @@ function racine_forum($id_forum){
if (!$row = spip_fetch_array($result)) if (!$row = spip_fetch_array($result))
return false; return false;
if ($row['id_parent']
AND $row['id_thread'] != $id_forum)) // eviter boucle infinie
return racine_forum($row['id_thread']);
if ($row['id_rubrique']) if ($row['id_rubrique'])
return array('rubrique', $row['id_rubrique'], $id_forum); return array('rubrique', $row['id_rubrique'], $id_forum);
if ($row['id_article']) if ($row['id_article'])
...@@ -246,9 +250,6 @@ function racine_forum($id_forum){ ...@@ -246,9 +250,6 @@ function racine_forum($id_forum){
if ($row['id_syndic']) if ($row['id_syndic'])
return array('site', $row['id_syndic'], $id_forum); return array('site', $row['id_syndic'], $id_forum);
if ($row['id_thread'] <> $id_forum)
return racine_forum($row['id_thread']);
// On ne devrait jamais arriver ici, mais prevoir des cas de forums // On ne devrait jamais arriver ici, mais prevoir des cas de forums
// poses sur autre chose que les objets prevus... // poses sur autre chose que les objets prevus...
spip_log("erreur racine_forum $id_forum"); spip_log("erreur racine_forum $id_forum");
......
...@@ -613,6 +613,8 @@ function indexer_objet($table, $id_objet, $forcer_reset = true) { ...@@ -613,6 +613,8 @@ function indexer_objet($table, $id_objet, $forcer_reset = true) {
// API pour l'espace prive pour marquer un objet d'une table a reindexer // API pour l'espace prive pour marquer un objet d'une table a reindexer
// http://doc.spip.org/@marquer_indexer // http://doc.spip.org/@marquer_indexer
function marquer_indexer ($table, $id_objet) { function marquer_indexer ($table, $id_objet) {
if (!isset($GLOBALS['INDEX_elements_objet'][$table]))
return;
spip_log ("demande indexation $table id=$id_objet"); spip_log ("demande indexation $table id=$id_objet");
$id = primary_index_table($table); $id = primary_index_table($table);
spip_query("UPDATE $table SET idx='1' WHERE $id=$id_objet AND idx!='non'"); spip_query("UPDATE $table SET idx='1' WHERE $id=$id_objet AND idx!='non'");
......
...@@ -555,6 +555,13 @@ function id_table_objet($type) { ...@@ -555,6 +555,13 @@ function id_table_objet($type) {
return 'id_'.$type; return 'id_'.$type;
} }
// Recuperer le nom de la table de jointure xxxx sur l'objet yyyy
function table_jointure($x, $y) {
include_spip('public/interfaces');
if ($table = $GLOBALS['tables_jointures']['spip_' . table_objet($y)][id_table_objet($x)]
OR $table = $GLOBALS['tables_jointures']['spip_' . table_objet($x)][id_table_objet($y)])
return $table;
}
// //
// spip_timer : on l'appelle deux fois et on a la difference, affichable // spip_timer : on l'appelle deux fois et on a la difference, affichable
......
...@@ -221,13 +221,13 @@ $table_date['syndic_articles']='date'; ...@@ -221,13 +221,13 @@ $table_date['syndic_articles']='date';
global $tables_jointures; global $tables_jointures;
$tables_jointures['spip_articles'][]= 'mots_articles'; $tables_jointures['spip_articles'][]= 'mots_articles';
$tables_jointures['spip_articles'][]= 'auteurs_articles'; $tables_jointures['spip_articles']['id_auteur']= 'auteurs_articles';
$tables_jointures['spip_articles'][]= 'documents_articles'; $tables_jointures['spip_articles'][]= 'documents_articles';
$tables_jointures['spip_articles'][]= 'mots'; $tables_jointures['spip_articles'][]= 'mots';
$tables_jointures['spip_articles'][]= 'signatures'; $tables_jointures['spip_articles'][]= 'signatures';
$tables_jointures['spip_auteurs'][]= 'auteurs_articles'; $tables_jointures['spip_auteurs'][]= 'auteurs_articles';
$tables_jointures['spip_auteurs'][]= 'mots'; $tables_jointures['spip_auteurs'][]= 'mots'; // ??
$tables_jointures['spip_breves'][]= 'mots_breves'; $tables_jointures['spip_breves'][]= 'mots_breves';
$tables_jointures['spip_breves'][]= 'documents_breves'; $tables_jointures['spip_breves'][]= 'documents_breves';
......
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