[ Index ] |
|
Code source de SPIP 1.9.2c |
1 <?php 2 3 /***************************************************************************\ 4 * SPIP, Systeme de publication pour l'internet * 5 * * 6 * Copyright (c) 2001-2007 * 7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * 8 * * 9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * 10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * 11 \***************************************************************************/ 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; 14 15 // Recupere les donnees d'un article pour composer un formulaire d'edition 16 // (utilise par exec/article_edit) 17 // id_article = numero d'article existant 18 // id_rubrique = ou veut-on l'installer (pas obligatoire) 19 // lier_trad = l'associer a l'article numero $lier_trad 20 // new=oui = article a creer si on valide le formulaire 21 // http://doc.spip.org/@article_select 22 function article_select($id_article, $id_rubrique=0, $lier_trad=0, $id_version=0) { 23 global $connect_id_auteur, $connect_id_rubrique, $spip_lang; 24 25 include_spip('inc/auth'); // pour auteurs_article si espace public 26 27 if (is_numeric($id_article)) { 28 29 if (!autoriser('modifier','article',$id_article)) 30 return array(); 31 32 // marquer le fait que l'article est ouvert en edition par toto a telle date 33 // une alerte sera donnee aux autres redacteurs sur exec=articles 34 if ($GLOBALS['meta']['articles_modif'] != 'non') { 35 include_spip('inc/drapeau_edition'); 36 signale_edition ($id_article, $GLOBALS['auteur_session'], 'article'); 37 } 38 $row = spip_fetch_array(spip_query("SELECT * FROM spip_articles WHERE id_article=$id_article")); 39 // si une ancienne revision est demandee, la charger 40 // en lieu et place de l'actuelle ; attention les champs 41 // qui etaient vides ne sont pas vide's. Ca permet de conserver 42 // des complements ajoutes "orthogonalement", et ca fait un code 43 // plus generique. 44 if ($id_version) { 45 include_spip('inc/revisions'); 46 if ($textes = recuperer_version($id_article, $id_version)) { 47 foreach ($textes as $champ => $contenu) 48 $row[$champ] = $contenu; 49 } 50 } 51 return $row; 52 } 53 // id_article non numerique, c'est une demande de creation. 54 // Si c'est une demande de nouvelle traduction, init specifique 55 if ($lier_trad) 56 $row = article_select_trad($lier_trad); 57 else { 58 $row['titre'] = filtrer_entites(_T('info_nouvel_article')); 59 $row['onfocus'] = " onfocus=\"if(!antifocus){this.value='';antifocus=true;}\""; 60 $row['id_rubrique'] = $id_rubrique; 61 } 62 63 // appel du script a la racine, faut choisir 64 // admin restreint ==> sa premiere rubrique 65 // autre ==> la derniere rubrique cree 66 if (!$row['id_rubrique']) { 67 if ($connect_id_rubrique) 68 $row['id_rubrique'] = $id_rubrique = $connect_id_rubrique[0]; 69 else { 70 $row_rub = spip_fetch_array(spip_query("SELECT id_rubrique FROM spip_rubriques ORDER BY id_rubrique DESC LIMIT 1")); 71 $row['id_rubrique'] = $id_rubrique = $row_rub['id_rubrique']; 72 } 73 if (!autoriser('creerarticledans','rubrique',$row['id_rubrique'] )){ 74 // manque de chance, la rubrique n'est pas autorisee, on cherche un des secteurs autorises 75 $res = spip_query("SELECT id_rubrique FROM spip_rubriques WHERE id_parent=0"); 76 while (!autoriser('creerarticledans','rubrique',$row['id_rubrique'] ) && $row_rub = spip_fetch_array($res)){ 77 $row['id_rubrique'] = $row_rub['id_rubrique']; 78 } 79 } 80 } 81 82 // recuperer le secteur, pour affecter les bons champs extras 83 if (!$row['id_secteur']) { 84 $row_rub = spip_fetch_array(spip_query("SELECT id_secteur FROM spip_rubriques WHERE id_rubrique=$id_rubrique")); 85 $row['id_secteur'] = $row_rub['id_secteur']; 86 } 87 88 return $row; 89 } 90 91 // 92 // Si un article est demande en creation (new=oui) avec un lien de trad, 93 // on initialise les donnees de maniere specifique 94 // 95 // http://doc.spip.org/@article_select_trad 96 function article_select_trad($lier_trad) { 97 // Recuperer les donnees de l'article original 98 $result = spip_query("SELECT * FROM spip_articles WHERE id_article=$lier_trad"); 99 if ($row = spip_fetch_array($result)) { 100 $row['titre'] = filtrer_entites(_T('info_nouvelle_traduction')).' '.$row["titre"]; 101 $id_rubrique = $row['id_rubrique']; 102 } 103 104 // Regler la langue, si possible, sur celle du redacteur 105 // Cela implique souvent de choisir une rubrique ou un secteur 106 if (in_array($GLOBALS['spip_lang'], 107 explode(',', $GLOBALS['meta']['langues_multilingue']))) { 108 // Si le menu de langues est autorise sur les articles, 109 // on peut changer la langue quelle que soit la rubrique 110 // donc on reste dans la meme rubrique 111 if ($GLOBALS['meta']['multi_articles'] == 'oui') { 112 $row['id_rubrique'] = $row['id_rubrique']; # explicite :-) 113 } 114 else if ($GLOBALS['meta']['multi_rubriques'] == 'oui') { 115 // Sinon, chercher la rubrique la plus adaptee pour 116 // accueillir l'article dans la langue du traducteur 117 if ($GLOBALS['meta']['multi_secteurs'] == 'oui') { 118 $id_parent = 0; 119 } else { 120 // on cherche une rubrique soeur dans la bonne langue 121 $row_rub = spip_fetch_array(spip_query("SELECT id_parent FROM spip_rubriques WHERE id_rubrique=$id_rubrique")); 122 123 $id_parent = $row_rub['id_parent']; 124 } 125 $row_rub = spip_fetch_array(spip_query("SELECT id_rubrique FROM spip_rubriques WHERE lang='".$GLOBALS['spip_lang']."' AND id_parent=$id_parent")); 126 if ($row_rub) 127 $row['id_rubrique'] = $row_rub['id_rubrique']; 128 } 129 } 130 131 return $row; 132 } 133 134 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Wed Nov 21 10:20:27 2007 | par Balluche grâce à PHPXref 0.7 |
![]() |