4000) $annee_redac -= 9000;
}
if (ereg("([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2})", $date, $regs)) {
$annee = $regs[1];
$mois = $regs[2];
$jour = $regs[3];
$heure = $regs[4];
$minute = $regs[5];
}
}
// reserver les Widget Calendar avant de commencer l'affichage
WCalendar_ajoute(_T('texte_date_publication_article'),'');
WCalendar_ajoute(_T('texte_date_publication_anterieure'),'_redac');
debut_page("« $titre_article »", "documents", "articles", "", "", $id_rubrique);
debut_grand_cadre();
afficher_hierarchie($id_rubrique);
fin_grand_cadre();
if (!$row) {echo _T('public:aucun_article'); exit;}
//
// Affichage de la colonne de gauche
//
debut_gauche();
boite_info_articles($id_article, $statut_article, $visites, $id_version);
//
// Logos de l'article et Boites de configuration avancee
//
// pour l'affichage du virtuel
unset($virtuel);
if (substr($chapo, 0, 1) == '=') {
$virtuel = substr($chapo, 1);
}
boites_de_config_articles($id_article, $id_rubrique, $flag_editable,
$change_accepter_forum, $change_petition,
$email_unique, $site_obli, $site_unique,
$message, $texte_petition,
$changer_virtuel, $virtuel);
//
// Affichage de la colonne de droite
//
debut_droite();
changer_typo('','article'.$id_article);
debut_cadre_relief();
//
// Titre, surtitre, sous-titre
//
$modif = titres_articles($titre, $statut_article,$surtitre, $soustitre, $descriptif, $url_site, $nom_site, $flag_editable, $id_article, $id_rubrique);
echo "
";
dates_articles($id_article, $id_rubrique, $flag_editable, $statut_article, $date,$annee, $mois, $jour, $heure, $minute, $date_redac, $annee_redac, $mois_redac, $jour_redac, $heure_redac, $minute_redac);
//
// Liste des auteurs de l'article
//
echo "
";
if ($flag_editable AND $options == 'avancees') {
$bouton = bouton_block_invisible("auteursarticle");
}
debut_cadre_enfonce("auteur-24.gif", false, "", $bouton._T('texte_auteurs').aide ("artauteurs"));
//
// Recherche d'auteur
//
$supprimer_bouton_creer_auteur = rechercher_auteurs_articles($cherche_auteur, $id_article, $id_rubrique, $ajout_auteur, $flag_editable, $nouv_auteur, $supp_auteur);
//
// Afficher les auteurs
//
$les_auteurs = afficher_auteurs_articles($id_article, $flag_editable);
//
// Ajouter un auteur
//
if ($flag_editable AND $options == 'avancees')
ajouter_auteurs_articles($id_article, $id_rubrique, $les_auteurs, $flag_editable, $rubrique_article, $supprimer_bouton_creer_auteur);
fin_cadre_enfonce(false);
//
// Liste des mots-cles de l'article
//
if ($options == 'avancees' AND $GLOBALS['meta']["articles_mots"] != 'non') {
formulaire_mots('articles', $id_article, $nouv_mot, $supp_mot, $cherche_mot, $flag_editable, generer_url_ecrire("articles","id_article=$id_article"));
}
langues_articles($id_article, $langue_article, $flag_editable, $id_rubrique, $id_trad, $dir_lang, $nom_select, $lier_trad);
afficher_statut_articles($id_article, $rubrique_article, $statut_article);
afficher_corps_articles($virtuel, $chapo, $texte, $ps, $extra);
if ($flag_editable) {
echo "\n\n
";
bouton_modifier_articles($id_article, $id_rubrique, $modif,_T('texte_travail_article', $modif), "warning-24.gif", "");
echo "
";
}
//
// Documents associes a l'article
//
if ($spip_display != 4)
afficher_documents_non_inclus($id_article, "article", $flag_editable);
//
// "Demander la publication"
//
if ($flag_auteur AND $statut_article == 'prepa') {
echo "
";
debut_cadre_relief();
echo "
",
""._T('texte_proposer_publication')." ",
aide ("artprop"),
"\n",
" ";
fin_cadre_relief();
}
echo "
";
echo "";
fin_cadre_relief();
affiche_forums_article($id_article, $id_rubrique, $titre, $debut);
fin_page();
}
function boite_info_articles($id_article, $statut_article, $visites, $id_version)
{
global $connect_statut, $options, $flag_revisions;
debut_boite_info();
echo "\n";
echo ""._T('info_numero_article')." \n";
echo "$id_article \n";
voir_en_ligne ('article', $id_article, $statut_article);
$activer_statistiques = $GLOBALS['meta']["activer_statistiques"];
if ($connect_statut == "0minirezo" AND $statut_article == 'publie' AND $visites > 0 AND $activer_statistiques != "non" AND $options == "avancees"){
icone_horizontale(_T('icone_evolution_visites', array('visites' => $visites)), generer_url_ecrire("statistiques_visites","id_article=$id_article"), "statistiques-24.gif","rien.gif");
}
if ((($GLOBALS['meta']["articles_versions"]=='oui') && $flag_revisions)
AND $id_version>1 AND $options == "avancees") {
icone_horizontale(_T('info_historique_lien'), generer_url_ecrire("articles_versions","id_article=$id_article"), "historique-24.gif", "rien.gif");
}
// Correction orthographique
if ($GLOBALS['meta']['articles_ortho'] == 'oui') {
$js_ortho = "onclick=\"window.open(this.href, 'spip_ortho', 'scrollbars=yes, resizable=yes, width=740, height=580'); return false;\"";
icone_horizontale(_T('ortho_verifier'), generer_url_ecrire("articles_ortho", "id_article=$id_article"), "ortho-24.gif", "rien.gif", 'echo', $js_ortho);
}
echo "
\n";
fin_boite_info();
}
function boites_de_config_articles($id_article, $id_rubrique, $flag_editable,
$change_accepter_forum, $change_petition,
$email_unique, $site_obli, $site_unique,
$message, $texte_petition,
$changer_virtuel, $virtuel)
{
global $connect_statut, $options, $spip_lang_right;
// Logos de l'article
if ($id_article AND $flag_editable)
afficher_boite_logo('art', 'id_article', $id_article,
_T('logo_article').aide ("logoart"), _T('logo_survol'), 'articles');
//
// Boites de configuration avancee
//
if ($options == "avancees" && $connect_statut=='0minirezo' && $flag_editable) {
echo "";
debut_cadre_relief("forum-interne-24.gif");
list($nb_forums) = spip_fetch_array(spip_query("SELECT count(*) AS count FROM spip_forum WHERE id_article=$id_article AND statut IN ('publie', 'off', 'prop')"));
list($nb_signatures) = spip_fetch_array(spip_query("SELECT COUNT(*) AS count FROM spip_signatures WHERE id_article=$id_article AND statut IN ('publie', 'poubelle')"));
$visible = $change_accepter_forum || $change_petition
|| $nb_forums || $nb_signatures;
echo "
";
if ($visible)
echo bouton_block_visible("forumpetition");
else
echo bouton_block_invisible("forumpetition");
echo _T('bouton_forum_petition') .aide('confforums');
echo "
";
if ($visible)
echo debut_block_visible("forumpetition");
else
echo debut_block_invisible("forumpetition");
echo "\n";
// Forums
if ($nb_forums) {
echo " \n";
icone_horizontale(_T('icone_suivi_forum', array('nb_forums' => $nb_forums)), generer_url_ecrire("articles_forum","id_article=$id_article"), "suivi-forum-24.gif", "");
}
// Reglage existant
$forums_publics = get_forums_publics($id_article);
// Modification du reglage ?
if (isset($change_accepter_forum)
AND $change_accepter_forum <> $forums_publics) {
$forums_publics = $change_accepter_forum;
modifier_forums_publics($id_article, $forums_publics);
}
// Afficher le formulaire de modification du reglage
echo formulaire_modification_forums_publics($id_article, $forums_publics, generer_url_ecrire("articles","id_article=$id_article"));
// Petitions
if ($change_petition) {
if ($change_petition == "on") {
if (!$email_unique) $email_unique = "non";
if (!$site_obli) $site_obli = "non";
if (!$site_unique) $site_unique = "non";
if (!$message) $message = "non";
$texte_petition = addslashes($texte_petition);
$result_pet = spip_query("REPLACE spip_petitions (id_article, email_unique, site_obli, site_unique, message, texte) VALUES ($id_article, '$email_unique', '$site_obli', '$site_unique', '$message', '$texte_petition')");
}
else if ($change_petition == "off") {
$result_pet = spip_query("DELETE FROM spip_petitions WHERE id_article=$id_article");
}
}
$petition = spip_fetch_array(spip_query("SELECT * FROM spip_petitions WHERE id_article=$id_article"));
$email_unique=$petition["email_unique"];
$site_obli=$petition["site_obli"];
$site_unique=$petition["site_unique"];
$message=$petition["message"];
$texte_petition=$petition["texte"];
echo generer_url_post_ecrire("articles","id_article=$id_article");
echo "\n";
if ($petition) {
$menu = array(
'on' => _T('bouton_radio_petition_activee'),
'off'=> _T('bouton_radio_supprimer_petition')
);
$val_menu = 'on';
} else {
$menu = array(
'off'=> _T('bouton_radio_pas_petition'),
'on' => _T('bouton_radio_activer_petition')
);
$val_menu = 'off';
}
foreach ($menu as $val => $desc) {
echo "".$desc." \n";
}
echo " \n";
if ($petition) {
if ($nb_signatures) {
echo " \n";
icone_horizontale($nb_signatures.' '. _T('info_signatures'), generer_url_ecrire("controle_petition","id_article=$id_article"), "suivi-petition-24.gif", "");
}
echo " \n";
if ($email_unique=="oui")
echo " ";
else
echo " ";
echo " "._T('bouton_checkbox_signature_unique_email')." ";
if ($site_obli=="oui")
echo " ";
else
echo " ";
echo " "._T('bouton_checkbox_indiquer_site')." ";
if ($site_unique=="oui")
echo " ";
else
echo " ";
echo " "._T('bouton_checkbox_signature_unique_site')." ";
if ($message=="oui")
echo " ";
else
echo " ";
echo " "._T('bouton_checkbox_envoi_message')." ";
echo ""._T('texte_descriptif_petition')." : ";
echo "
\n";
echo "
";
}
if (!$petition) echo "";
echo " ";
if (!$petition) echo " ";
echo "";
echo "
";
echo fin_block();
fin_cadre_relief();
// Redirection (article virtuel)
debut_cadre_relief("site-24.gif");
$visible = ($changer_virtuel || $virtuel);
echo "";
if ($visible)
echo bouton_block_visible("redirection");
else
echo bouton_block_invisible("redirection");
echo _T('bouton_redirection');
echo aide ("artvirt");
echo "
";
if ($visible)
echo debut_block_visible("redirection");
else
echo debut_block_invisible("redirection");
echo generer_url_post_ecrire("articles", "id_article=$id_article");
echo "\n ";
$virtuelhttp = ($virtuel ? "" : "http://");
echo " ";
echo "";
echo "("._T('texte_article_virtuel')." : "._T('texte_reference_mais_redirige').")";
echo " ";
echo "
";
echo "";
echo fin_block();
fin_cadre_relief();
}
//
// Articles dans la meme rubrique
//
meme_rubrique_articles($id_rubrique, $id_article, $options);
}
function meme_rubrique_articles($id_rubrique, $id_article, $options, $order='articles.date', $limit=30)
{
global $spip_lang_right, $spip_lang_left;
$vos_articles = spip_query("SELECT articles.id_article, articles.titre, articles.statut FROM spip_articles AS articles WHERE articles.id_rubrique='$id_rubrique' AND (articles.statut = 'publie' OR articles.statut = 'prop') AND articles.id_article != '$id_article' ORDER BY $order DESC LIMIT $limit");
if (spip_num_rows($vos_articles) > 0) {
echo "
";
echo "";
bandeau_titre_boite2(_T('info_meme_rubrique'), "article-24.gif");
echo "
";
while($row = spip_fetch_array($vos_articles)) {
$ze_article = $row['id_article'];
$ze_titre = typo($row['titre']);
$ze_statut = $row['statut'];
if ($options == "avancees") {
$numero = "
"._T('info_numero_abbreviation')."$ze_article
";
}
echo "
$numero$ze_titre ";
}
echo "
";
echo "
";
}
}
function bouton_modifier_articles($id_article, $id_rubrique, $flag_modif, $mode, $ip, $im)
{
if ($flag_modif) {
icone(_T('icone_modifier_article'), generer_url_ecrire("articles_edit","id_article=$id_article"), $ip, $im);
echo "$mode ";
echo aide("artmodif");
}
else {
icone(_T('icone_modifier_article'), generer_url_ecrire("articles_edit","id_article=$id_article"), "article-24.gif", "edit.gif");
}
}
function titres_articles($titre, $statut_article,$surtitre, $soustitre, $descriptif, $url_site, $nom_site, $flag_editable, $id_article, $id_rubrique)
{
global $dir_lang, $spip_lang_left, $connect_id_auteur;
$logo_statut = "puce-".puce_statut($statut_article).".gif";
echo "\n";
echo "";
if ($surtitre) {
echo "";
echo typo($surtitre);
echo " \n";
}
gros_titre($titre, $logo_statut);
if ($soustitre) {
echo "";
echo typo($soustitre);
echo " \n";
}
if ($descriptif OR $url_site OR $nom_site) {
echo "
";
echo "";
$texte_case = ($descriptif) ? "{{"._T('info_descriptif')."}} $descriptif\n\n" : '';
$texte_case .= ($nom_site.$url_site) ? "{{"._T('info_urlref')."}} [".$nom_site."->".$url_site."]" : '';
echo propre($texte_case);
echo " ";
echo "
";
}
if ($statut_article == 'prop') {
echo ""._T('text_article_propose_publication')."
";
}
echo " ";
$flag_modif = false;
if ($flag_editable) {
echo "". http_img_pack('rien.gif', " ", "width='5'") . " \n";
echo "";
// Recuperer les donnees de l'article
if ($GLOBALS['meta']['articles_modif'] != 'non') {
$result = spip_query("SELECT auteur_modif, UNIX_TIMESTAMP(date_modif) AS modification, UNIX_TIMESTAMP(NOW()) AS maintenant FROM spip_articles WHERE id_article='$id_article'");
if ($row = spip_fetch_array($result)) {
$auteur_modif = $row["auteur_modif"];
$modification = $row["modification"];
$maintenant = $row["maintenant"];
$date_diff = floor(($maintenant - $modification)/60);
if ($date_diff >= 0 AND $date_diff < 60 AND $auteur_modif > 0 AND $auteur_modif != $connect_id_auteur) {
$result_auteur = spip_query("SELECT nom FROM spip_auteurs WHERE id_auteur='$auteur_modif'");
if ($row_auteur = spip_fetch_array($result_auteur)) {
$nom_auteur_modif = typo($row_auteur["nom"]);
}
$modif = array('nom_auteur_modif' => $nom_auteur_modif, 'date_diff' => $date_diff);
}
}
}
bouton_modifier_articles($id_article, $id_rubrique, $modif, _T('avis_article_modifie', $modif), "article-24.gif", "edit.gif");
echo " ";
}
echo "
\n";
echo "
";
return $modif;
}
function dates_articles($id_article, $id_rubrique, $flag_editable, $statut_article, $date, $annee, $mois, $jour, $heure, $minute, $date_redac, $annee_redac, $mois_redac, $jour_redac, $heure_redac, $minute_redac)
{
global $spip_lang_left, $spip_lang_right, $options;
if ($flag_editable AND $options == 'avancees') {
debut_cadre_couleur();
echo generer_url_post_ecrire("articles", "id_article=$id_article");
if ($statut_article == 'publie') {
echo "";
echo bouton_block_invisible("datepub");
echo ""._T('texte_date_publication_article').' ';
echo majuscules(affdate($date)),
" ".aide('artdate')."
";
echo debut_block_invisible("datepub"),
"",
WCalendar_controller($date,''),
/*afficher_jour($jour, "name='jour' size='1' class='fondl' onChange=\"setvisibility('valider_date', 'visible')\"", true),
afficher_mois($mois, "name='mois' size='1' class='fondl' onChange=\"setvisibility('valider_date', 'visible')\"", true),
afficher_annee($annee, "name='annee' size='1' class='fondl' onChange=\"setvisibility('valider_date', 'visible')\""),*/
' - ',
afficher_heure($heure, "name='heure' size='1' class='fondl' onChange=\"setvisibility('valider_date', 'visible')\""),
afficher_minute($minute, "name='minute' size='1' class='fondl' onChange=\"setvisibility('valider_date', 'visible')\""),
"",
" ",
" ",
"
",
fin_block();
}
else {
echo " "._T('texte_date_creation_article').' ';
echo majuscules(affdate($date))." ".aide('artdate')."
";
}
$possedeDateRedac=($annee_redac.'-'.$mois_redac.'-'.$jour_redac != '0000-00-00');
if (($options == 'avancees' AND $GLOBALS['meta']["articles_redac"] != 'non')
OR $possedeDateRedac) {
if ($possedeDateRedac)
$date_affichee = majuscules(affdate($date_redac))
# ." " ._T('date_fmt_heures_minutes', array('h' =>$heure_redac, 'm'=>$minute_redac))
;
else
$date_affichee = majuscules(_T('jour_non_connu_nc'));
echo "";
echo bouton_block_invisible('dateredac');
echo ""
. majuscules(_T('texte_date_publication_anterieure'))
.' '. $date_affichee ." ".aide('artdate_redac')."
";
echo debut_block_invisible('dateredac');
echo "";
echo '
';
echo '';
echo ' '._T('texte_date_publication_anterieure_nonaffichee').' ';
echo ' '._T('bouton_radio_afficher').' : ',
WCalendar_controller($date_redac,'_redac');
/*afficher_jour($jour_redac, "name='jour_redac' class='fondl' onChange=\"setvisibility('valider_date_prec', 'visible')\"", true),
afficher_mois($mois_redac, "name='mois_redac' class='fondl' onChange=\"setvisibility('valider_date_prec', 'visible')\"", true);
echo " ";*/
echo '',
afficher_heure($heure_redac, "name='heure_redac' class='fondl' onChange=\"setvisibility('valider_date_prec', 'visible')\"", true),
afficher_minute($minute_redac, "name='minute_redac' class='fondl' onChange=\"setvisibility('valider_date_prec', 'visible')\"", true),
"
\n";
echo ' ';
echo "";
echo ' ';
echo " ";
echo ' ';
echo '
';
echo "
";
echo fin_block();
}
echo "";
fin_cadre_couleur();
}
else {
if ($statut_article == 'publie') $texte_date = _T('texte_date_publication_article');
else $texte_date = _T('texte_date_creation_article');
debut_cadre_couleur();
echo " $texte_date ";
echo majuscules(affdate($date))." ".aide('artdate')."
";
if ($annee_redac.'-'.$mois_redac.'-'.$jour_redac != '0000-00-00') {
$date_affichee = ' : '.majuscules(affdate($date_redac));
echo " "._T(texte_date_publication_anterieure)." ";
echo $date_affichee." ".aide('artdate_redac')."
";
}
fin_cadre_couleur();
}
}
function langues_articles($id_article, $langue_article, $flag_editable, $id_rubrique, $id_trad, $dir_lang, $nom_select, $lier_trad)
{
global $connect_statut, $couleur_claire, $options, $connect_toutes_rubriques;
if (($GLOBALS['meta']['multi_articles'] == 'oui')
OR (($GLOBALS['meta']['multi_rubriques'] == 'oui') AND ($GLOBALS['meta']['gerer_trad'] == 'oui'))) {
list($langue_article) = spip_fetch_array(spip_query("SELECT lang FROM spip_articles WHERE id_article=$id_article"));
if ($GLOBALS['meta']['gerer_trad'] == 'oui')
$titre_barre = _T('titre_langue_trad_article');
else
$titre_barre = _T('titre_langue_article');
$titre_barre .= " (".traduire_nom_langue($langue_article).")";
debut_cadre_enfonce('langues-24.gif', false, "", bouton_block_invisible('languesarticle,ne_plus_lier,lier_traductions').$titre_barre);
// Choix langue article
if ($GLOBALS['meta']['multi_articles'] == 'oui' AND $flag_editable) {
echo debut_block_invisible('languesarticle');
$row = spip_fetch_array(spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique=$id_rubrique"));
$langue_parent = $row['lang'];
debut_cadre_couleur();
echo "";
echo menu_langues('changer_lang', $langue_article, _T('info_multi_cet_article').' ', $langue_parent);
echo "
\n";
fin_cadre_couleur();
echo fin_block();
}
// Gerer les groupes de traductions
if ($GLOBALS['meta']['gerer_trad'] == 'oui') {
if ($flag_editable AND _request('supp_trad') == 'oui') { // Ne plus lier a un groupe de trad
spip_query("UPDATE spip_articles SET id_trad=0, date_modif=NOW() WHERE id_article = $id_article");
// Verifier si l'ancien groupe ne comporte plus qu'un seul article. Alors mettre a zero.
$result_autres_trad= spip_query("SELECT COUNT(id_article) AS total FROM spip_articles WHERE id_trad = $id_trad");
if ($row = spip_fetch_array($result_autres_trad))
$nombre_autres_trad = $row["total"];
if ($nombre_autres_trad == 1)
spip_query("UPDATE spip_articles SET id_trad = 0, date_modif=NOW() WHERE id_trad = $id_trad");
$id_trad = 0;
}
// Changer article de reference de la trad
if ($id_trad_new = intval($id_trad_new)
AND $id_trad_old = intval($id_trad_old)
AND $connect_statut=='0minirezo'
AND $connect_toutes_rubriques) {
spip_query("UPDATE spip_articles SET id_trad = $id_trad_new, date_modif=NOW() WHERE id_trad = $id_trad_old");
$id_trad = $id_trad_new;
}
if ($flag_editable AND $lier_trad > 0) { // Lier a un groupe de trad
$result_lier = spip_query("SELECT id_trad FROM spip_articles WHERE id_article=$lier_trad");
if ($row = spip_fetch_array($result_lier)) {
$id_lier = $row['id_trad'];
if ($id_lier == 0) { // Si l'article vise n'a pas deja de traduction, creer nouveau id_trad
$nouveau_trad = $lier_trad;
}
else {
if ($id_lier == $id_trad) $err = ""._T('trad_deja_traduit')."
";
$nouveau_trad = $id_lier;
}
spip_query("UPDATE spip_articles SET id_trad = $nouveau_trad, date_modif=NOW() WHERE id_article = $lier_trad");
if ($id_lier > 0) spip_query("UPDATE spip_articles SET id_trad = $nouveau_trad, date_modif=NOW() WHERE id_trad = $id_lier");
spip_query("UPDATE spip_articles SET id_trad = $nouveau_trad, date_modif=NOW() WHERE id_article = $id_article");
if ($id_trad > 0) spip_query("UPDATE spip_articles SET id_trad = $nouveau_trad, date_modif=NOW() WHERE id_trad = $id_trad");
$id_trad = $nouveau_trad;
}
else
$err .= ""._T('trad_article_inexistant')."
";
if ($err) echo "$err ";
}
// Afficher la liste des traductions
if ($id_trad != 0) {
$result_trad = spip_query("SELECT id_article, id_rubrique, titre, lang, statut FROM spip_articles WHERE id_trad = $id_trad");
$table='';
while ($row = spip_fetch_array($result_trad)) {
$vals = '';
$id_article_trad = $row["id_article"];
$id_rubrique_trad = $row["id_rubrique"];
$titre_trad = $row["titre"];
$lang_trad = $row["lang"];
$statut_trad = $row["statut"];
changer_typo($lang_trad);
$titre_trad = "$titre_trad ";
if ($ifond == 1) {
$ifond = 0;
$bgcolor = "white";
} else {
$ifond = 1;
$bgcolor = $couleur_claire;
}
$vals[] = http_img_pack("puce-".puce_statut($statut_trad).'.gif', "", "width='7' height='7' border='0' NAME='statut'");
if ($id_article_trad == $id_trad) {
$vals[] = http_img_pack('langues-12.gif', "", "width='12' height='12' border='0'");
$titre_trad = "$titre_trad ";
} else {
if ($connect_statut=='0minirezo'
AND $connect_toutes_rubriques)
$vals[] = "".
http_img_pack('langues-off-12.gif', _T('trad_reference'), "width='12' height='12' border='0'", _T('trad_reference')) . " ";
else $vals[] = http_img_pack('langues-off-12.gif', "", "width='12' height='12' border='0'");
}
$ret .= "";
$s = typo($titre_trad);
if ($id_article_trad != $id_article)
$s = "$s ";
if ($id_article_trad == $id_trad)
$s .= " "._T('trad_reference');
$vals[] = $s;
$vals[] = traduire_nom_langue($lang_trad);
$table[] = $vals;
}
// changer_typo($spip_lang); (probleme d'affichage rtl?)
// bloc traductions
if (count($vals) > 0) {
echo "";
bandeau_titre_boite2(_T('trad_article_traduction'),'');
echo "
";
//echo ""._T('trad_article_traduction')." ";
$largeurs = array(7, 12, '', 100);
$styles = array('', '', 'arial2', 'arial2');
echo afficher_liste($largeurs, $table, $styles);
echo "
";
echo "
";
}
changer_typo($langue_article);
}
echo debut_block_invisible('lier_traductions');
echo "";
if ($flag_editable AND $options == "avancees" AND !$ret) {
// Formulaire pour lier a un article
echo "";
echo "";
echo " \n";
echo " ";
echo "". http_img_pack('rien.gif', " ", "width='2' height='2'") . " ";
echo " ";
}
echo "";
icone_horizontale(_T('trad_new'), generer_url_ecrire("articles_edit","new=oui&lier_trad=$id_article&id_rubrique=$id_rubrique"), "traductions-24.gif", "creer.gif");
echo " ";
if ($flag_editable AND $options == "avancees" AND $ret) {
echo " ";
echo "". http_img_pack('rien.gif', " ", "width='2' height='2'") . " ";
echo " ";
echo "";
icone_horizontale(_T('trad_delier'), generer_url_ecrire("articles","id_article=$id_article&supp_trad=oui"), "traductions-24.gif", "supprimer.gif");
echo " \n";
}
echo "
";
echo fin_block();
}
fin_cadre_enfonce();
}
}
function add_auteur_article($id_article, $nouv_auteur)
{
$res = spip_query("SELECT id_article FROM spip_auteurs_articles WHERE id_auteur='$nouv_auteur' AND id_article='$id_article'");
if (!spip_num_rows($res))
spip_abstract_insert('spip_auteurs_articles', "(id_auteur,id_article)", "('$nouv_auteur','$id_article')");
}
function rechercher_auteurs_articles($cherche_auteur, $id_article, $id_rubrique, $ajout_auteur, $flag_editable, $nouv_auteur, $supp_auteur)
{
global $spip_lang_left;
$supprimer_bouton_creer_auteur = false;
if ($cherche_auteur) {
echo "";
$result = spip_query("SELECT id_auteur, nom FROM spip_auteurs");
$table_auteurs = array();
$table_ids = array();
while ($row = spip_fetch_array($result)) {
$table_auteurs[] = $row["nom"];
$table_ids[] = $row["id_auteur"];
}
$resultat = mots_ressemblants($cherche_auteur, $table_auteurs, $table_ids);
debut_boite_info();
if (!$resultat) {
echo ""._T('texte_aucun_resultat_auteur', array('cherche_auteur' => $cherche_auteur)).". ";
}
else if (count($resultat) == 1) {
$ajout_auteur = 'oui';
list(, $nouv_auteur) = each($resultat);
echo ""._T('texte_ajout_auteur')." ";
$result = spip_query("SELECT * FROM spip_auteurs WHERE id_auteur=$nouv_auteur");
echo "
";
while ($row = spip_fetch_array($result)) {
$id_auteur = $row['id_auteur'];
$nom_auteur = $row['nom'];
$email_auteur = $row['email'];
$bio_auteur = $row['bio'];
echo "".typo($nom_auteur)." ";
echo " \n";
}
echo " ";
}
else if (count($resultat) < 16) {
reset($resultat);
$les_auteurs = array();
while (list(, $id_auteur) = each($resultat)) $les_auteurs[] = $id_auteur;
if ($les_auteurs) {
$les_auteurs = join(',', $les_auteurs);
echo ""._T('texte_plusieurs_articles', array('cherche_auteur' => $cherche_auteur))." ";
$result = spip_query("SELECT * FROM spip_auteurs WHERE id_auteur IN ($les_auteurs) ORDER BY nom");
echo "";
while ($row = spip_fetch_array($result)) {
$id_auteur = $row['id_auteur'];
$nom_auteur = $row['nom'];
$email_auteur = $row['email'];
$bio_auteur = $row['bio'];
echo "".typo($nom_auteur)." ";
if ($email_auteur) echo " ($email_auteur)";
echo " | ",_T('lien_ajouter_auteur')," ";
if (trim($bio_auteur)) {
echo " ".couper(propre($bio_auteur), 100)."\n";
}
echo " \n";
}
echo " ";
}
}
else {
echo ""._T('texte_trop_resultats_auteurs', array('cherche_auteur' => $cherche_auteur))." ";
}
if ($GLOBALS['connect_statut'] == '0minirezo'
AND $GLOBALS['connect_toutes_rubriques']) {
echo "";
$retour = rawurlencode(generer_url_ecrire("articles","id_article=$id_article"));
$titre = rawurlencode($cherche_auteur);
icone_horizontale(_T('icone_creer_auteur'), generer_url_ecrire("auteur_infos","ajouter_id_article=$id_article&nom=$titre&redirect=$retour"), "redacteurs-24.gif", "creer.gif");
echo "
";
// message pour ne pas afficher le second bouton "creer un auteur"
$supprimer_bouton_creer_auteur = true;
}
fin_boite_info();
echo "";
}
//
// Appliquer les modifications sur les auteurs
//
if ($ajout_auteur && $flag_editable) {
if ($nouv_auteur > 0) {
add_auteur_article($id_article, $nouv_auteur);
}
if ($GLOBALS['meta']['activer_moteur'] == 'oui') {
include_spip("inc/indexation");
marquer_indexer('article', $id_article);
}
}
if ($supp_auteur && $flag_editable) {
spip_query("DELETE FROM spip_auteurs_articles WHERE id_auteur='$supp_auteur' AND id_article='$id_article'");
if ($GLOBALS['meta']['activer_moteur'] == 'oui') {
include_spip("inc/indexation");
marquer_indexer('article', $id_article);
}
}
return $supprimer_bouton_creer_auteur;
}
function afficher_auteurs_articles($id_article, $flag_editable)
{
global $connect_statut, $options,$connect_id_auteur;
$les_auteurs = array();
$result = spip_query("SELECT * FROM spip_auteurs AS auteurs, spip_auteurs_articles AS lien WHERE auteurs.id_auteur=lien.id_auteur AND lien.id_article=$id_article GROUP BY auteurs.id_auteur ORDER BY auteurs.nom");
if (spip_num_rows($result)) {
echo "
";
echo "
";
$table = array();
while ($row = spip_fetch_array($result)) {
$vals = array();
$id_auteur = $row["id_auteur"];
$nom_auteur = $row["nom"];
$email_auteur = $row["email"];
if ($bio_auteur = attribut_html(propre(couper($row["bio"], 100))))
$bio_auteur = " TITLE=\"$bio_auteur\"";
$url_site_auteur = $row["url_site"];
$statut_auteur = $row["statut"];
if ($row['messagerie'] == 'non' OR $row['login'] == '') $messagerie = 'non';
$les_auteurs[] = $id_auteur;
if ($connect_statut == "0minirezo") $aff_articles = "('prepa', 'prop', 'publie', 'refuse')";
else $aff_articles = "('prop', 'publie')";
$result2 = spip_query("SELECT COUNT(articles.id_article) AS compteur FROM spip_auteurs_articles AS lien, spip_articles AS articles WHERE lien.id_auteur=$id_auteur AND articles.id_article=lien.id_article AND articles.statut IN $aff_articles GROUP BY lien.id_auteur");
if ($result2) list($nombre_articles) = spip_fetch_array($result2);
else $nombre_articles = 0;
$vals[] = bonhomme_statut($row);
$vals[] = "".typo($nom_auteur)." ";
$vals[] = bouton_imessage($id_auteur);
if ($email_auteur) $vals[] = ""._T('email')." ";
else $vals[] = " ";
if ($url_site_auteur) $vals[] = ""._T('info_site_min')." ";
else $vals[] = " ";
if ($nombre_articles > 1) $vals[] = $nombre_articles.' '._T('info_article_2');
else if ($nombre_articles == 1) $vals[] = _T('info_1_article');
else $vals[] = " ";
if ($flag_editable AND ($connect_id_auteur != $id_auteur OR $connect_statut == '0minirezo') AND $options == 'avancees') {
$vals[] = ""._T('lien_retirer_auteur')." ". http_img_pack('croix-rouge.gif', "X", "width='7' height='7' border='0' align='middle'") . " ";
} else {
$vals[] = "";
}
$table[] = $vals;
}
$largeurs = array('14', '', '', '', '', '', '');
$styles = array('arial11', 'arial2', 'arial11', 'arial11', 'arial11', 'arial11', 'arial1');
echo afficher_liste($largeurs, $table, $styles);
echo "
\n";
$les_auteurs = join(',', $les_auteurs);
}
return $les_auteurs ;
}
function ajouter_auteurs_articles($id_article, $id_rubrique, $les_auteurs, $flag_editable, $rubrique_article, $supprimer_bouton_creer_auteur)
{
global $connect_toutes_rubriques, $connect_statut, $couleur_claire ;
echo debut_block_invisible("auteursarticle");
echo "";
if ($connect_statut == '0minirezo'
AND $connect_toutes_rubriques
AND !$supprimer_bouton_creer_auteur) {
echo "";
$retour = rawurlencode(generer_url_ecrire("articles","id_article=$id_article"));
icone_horizontale(_T('icone_creer_auteur'), generer_url_ecrire("auteur_infos","ajouter_id_article=$id_article&redirect=$retour"), "redacteurs-24.gif", "creer.gif");
echo " ";
echo " ";
}
echo "";
$result = spip_query("SELECT * FROM spip_auteurs WHERE " .
(!$les_auteurs ? '' : "id_auteur NOT IN ($les_auteurs) AND ") .
"statut!='5poubelle' AND statut!='6forum' AND statut!='nouveau' ORDER BY statut, nom");
$num = spip_num_rows($result);
if ($num) {
echo generer_url_post_ecrire("articles", "id_article=$id_article");;
echo ""._T('titre_cadre_ajouter_auteur')." \n";
echo " ";
if ($num > 200) {
echo " ";
echo "";
echo " ";
echo " ";
} else {
echo " ";
echo "";
while ($row = spip_fetch_array($result)) {
$id_auteur = $row["id_auteur"];
$nom = $row["nom"];
$email = $row["email"];
$statut = $row["statut"];
$statut=str_replace("0minirezo", _T('info_administrateurs'), $statut);
$statut=str_replace("1comite", _T('info_redacteurs'), $statut);
$statut=str_replace("6visiteur", _T('info_visiteurs'), $statut);
$premiere = strtoupper(substr(trim($nom), 0, 1));
if ($connect_statut != '0minirezo')
if ($p = strpos($email, '@'))
$email = substr($email, 0, $p).'@...';
if ($email)
$email = " ($email)";
if ($statut != $statut_old) {
echo "\n";
echo "\n $statut";
}
if ($premiere != $premiere_old AND ($statut != _T('info_administrateurs') OR !$premiere_old)) {
echo "\n ";
}
echo "\n ", supprimer_tags(couper(typo("$nom$email"), 40));
$statut_old = $statut;
$premiere_old = $premiere;
}
echo " ",
"",
" ",
" ";
}
echo "
";
}
echo "
";
echo fin_block();
}
function afficher_corps_articles($virtuel, $chapo, $texte, $ps, $extra)
{
global $revision_nbsp, $activer_revision_nbsp, $champs_extra, $les_notes, $dir_lang;
echo "\n\n";
if ($virtuel) {
debut_boite_info();
echo _T('info_renvoi_article')." ".propre("
[->$virtuel] ");
fin_boite_info();
} else {
$revision_nbsp = $activer_revision_nbsp;
if (strlen($chapo) > 0) {
echo "
";
echo propre($chapo);
echo "
\n\n";
}
echo "
";
# echo reduire_image(propre($texte), 500,10000);
echo propre($texte);
echo " ";
echo "
";
if ($ps) {
echo debut_cadre_enfonce();
echo "
";
echo justifier(""._T('info_ps')." ".propre($ps));
echo "
";
echo fin_cadre_enfonce();
}
$revision_nbsp = false;
if ($les_notes) {
echo debut_cadre_relief();
echo "
";
echo justifier(""._T('info_notes')." : ".$les_notes);
echo "
";
echo fin_cadre_relief();
}
if ($champs_extra AND $extra) {
include_spip('inc/extra');
extra_affichage($extra, "articles");
}
}
}
function affiche_forums_article($id_article, $id_rubrique, $titre, $debut, $mute=false)
{
global $spip_lang_left;
echo "
";
$forum_retour = generer_url_ecrire("articles","id_article=$id_article", true);
if (!$mute) {
$tm = rawurlencode($titre);
echo "\n
";
icone(_T('icone_poster_message'), generer_url_ecrire("forum_envoi","statut=prive&adresse_retour=" . rawurlencode($forum_retour) . "&id_article=$id_article&titre_message=$tm"), "forum-interne-24.gif", "creer.gif");
echo "
";
}
echo "
";
$result_forum = spip_query("SELECT COUNT(*) AS cnt FROM spip_forum WHERE statut='prive' AND id_article='$id_article' AND id_parent=0");
$total = 0;
if ($row = spip_fetch_array($result_forum)) $total = $row["cnt"];
if (!$debut) $debut = 0;
$total_afficher = 8;
if ($total > $total_afficher) {
echo "
";
for ($i = 0; $i < $total; $i = $i + $total_afficher){
$y = $i + $total_afficher - 1;
if ($i == $debut)
echo "
[$i-$y] ";
else
echo "[
$i-$y ] ";
}
echo "
";
}
$result_forum = spip_query("SELECT * FROM spip_forum WHERE statut='prive' AND id_article='$id_article' AND id_parent=0 ORDER BY date_heure DESC" .
# " LIMIT $total_afficher OFFSET $debut" # PG
" LIMIT $debut,$total_afficher"
);
afficher_forum($result_forum, $forum_retour, $mute);
if (!$debut) $debut = 0;
$total_afficher = 8;
if ($total > $total_afficher) {
echo "
";
for ($i = 0; $i < $total; $i = $i + $total_afficher){
$y = $i + $total_afficher - 1;
if ($i == $debut)
echo "
[$i-$y] ";
else
echo "[
$i-$y ] ";
}
echo "
";
}
echo "
\n";
}
function afficher_statut_articles($id_article, $rubrique_article, $statut_article)
{
global $connect_statut;
if ($connect_statut == '0minirezo' AND acces_rubrique($rubrique_article)) {
echo "\n";
}
}
//
// Reunit les textes decoupes parce que trop longs
//
function trop_longs_articles($texte_plus)
{
$nb_texte = 0;
while ($nb_texte ++ < count($texte_plus)+1){
$texte_ajout .= ereg_replace("[\n\r]*","",
$texte_plus[$nb_texte]);
}
return $texte_ajout;
}
function modif_langue_articles($id_article, $id_rubrique, $changer_lang)
{
// Appliquer la modification de langue
if ($GLOBALS['meta']['multi_articles'] == 'oui') {
list($langue_parent) = spip_fetch_array(spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique=" . $id_rubrique));
if ($changer_lang) {
if ($changer_lang != "herit")
spip_query("UPDATE spip_articles SET lang='".addslashes($changer_lang)."', langue_choisie='oui', date_modif=NOW() WHERE id_article=$id_article");
else
spip_query("UPDATE spip_articles SET lang='".addslashes($langue_parent)."', langue_choisie='non', date_modif=NOW() WHERE id_article=$id_article");
}
}
}
// Passer les images/docs en "inclus=non"
function inclus_non_articles($id_article)
{
$result = spip_query("SELECT docs.id_document FROM spip_documents AS docs, spip_documents_articles AS lien WHERE lien.id_article=$id_article AND lien.id_document=docs.id_document");
while($row=spip_fetch_array($result)){
$ze_doc[]=$row['id_document'];
}
if (count($ze_doc)>0){
$ze_docs = join($ze_doc,",");
spip_query("UPDATE spip_documents SET inclus='non' WHERE id_document IN ($ze_docs)");
}
}
function revisions_articles ($id_article, $id_secteur, $id_rubrique, $id_rubrique_old, $change_rubrique, $new, $champs) {
{
global $connect_id_auteur, $flag_revisions, $champs_extra;
// Stockage des versions : creer une premier version si non-existante
if (($GLOBALS['meta']["articles_versions"]=='oui') && $flag_revisions) {
include_spip('inc/revisions');
if ($new != 'oui') {
$query = spip_query("SELECT id_article FROM spip_versions WHERE id_article=$id_article LIMIT 1");
if (!spip_num_rows($query)) {
$select = join(", ", array_keys($champs));
$query = spip_query("SELECT $select FROM spip_articles WHERE id_article=$id_article");
$champs_originaux = spip_fetch_array($query);
$id_version = ajouter_version($id_article, $champs_originaux, _T('version_initiale'), 0);
// Remettre une date un peu ancienne pour la version initiale
if ($id_version == 1) // test inutile ?
spip_query("UPDATE spip_versions SET date=DATE_SUB(NOW(), INTERVAL 2 HOUR) WHERE id_article=$id_article AND id_version=1");
}
}
}
if ($champs_extra) {
include_spip('inc/extra');
$champs_extra = ", extra = '".addslashes(extra_recup_saisie("articles", $id_secteur))."'";
}
spip_query("UPDATE spip_articles SET surtitre='" .
addslashes($champs['surtitre']) .
"', titre='" .
addslashes($champs['titre']) .
"', soustitre='" .
addslashes($champs['soustitre']) .
"', id_rubrique=" .
intval($id_rubrique) .
", descriptif='" .
addslashes($champs['descriptif']) .
"', chapo='" .
addslashes($champs['chapo']) .
"', texte='" .
addslashes($champs['texte']) .
"', ps='" .
addslashes($champs['ps']) .
"', url_site='" .
addslashes($champs['url_site']) .
"', nom_site='" .
addslashes($champs['nom_site']) .
"', date_modif=NOW() $champs_extra WHERE id_article=$id_article");
// Stockage des versions
if (($GLOBALS['meta']["articles_versions"]=='oui') && $flag_revisions) {
ajouter_version($id_article, $champs, '', $connect_id_auteur);
}
// Changer la langue heritee
if ($id_rubrique != $id_rubrique_old) {
propager_les_secteurs();
$row = spip_fetch_array(spip_query("SELECT lang, langue_choisie FROM spip_articles WHERE id_article=$id_article"));
$langue_old = $row['lang'];
$langue_choisie_old = $row['langue_choisie'];
if ($langue_choisie_old != "oui") {
$row = spip_fetch_array(spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique=$id_rubrique"));
$langue_new = $row['lang'];
if ($langue_new != $langue_old) spip_query("UPDATE spip_articles SET lang = '$langue_new', date_modif=NOW() WHERE id_article = $id_article");
}
}
// marquer l'article (important pour les articles nouvellement crees)
spip_query("UPDATE spip_articles SET date_modif=NOW(), auteur_modif=$connect_id_auteur WHERE id_article=$id_article");
calculer_rubriques();
}
}
function insert_article($id_parent, $new)
{
if ($new!='oui') redirige_par_entete("./");
// Avec l'Ajax parfois id_rubrique vaut 0... ne pas l'accepter
if (!$id_rubrique = intval($id_parent)) {
list($id_rubrique) = spip_fetch_array(spip_query("SELECT id_rubrique FROM spip_rubriques WHERE id_parent=0 ORDER by 0+titre,titre LIMIT 1"));
}
$row = spip_fetch_array(spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique=$id_rubrique"));
$id_article = spip_abstract_insert("spip_articles",
"(id_rubrique, statut, date, accepter_forum, lang, langue_choisie)",
"($id_rubrique, 'prepa', NOW(), '" .
substr($GLOBALS['meta']['forums_publics'],0,3)
. "', '"
. ($row["lang"] ? $row["lang"] : $GLOBALS['meta']['langue_site'])
. "', 'non')");
return $id_article;
}
// Y a-t-il vraiment 56 variables determinant l'edition d'un article ?
function exec_articles_dist()
{
global $ajout_auteur, $annee, $annee_redac, $avec_redac, $champs_extra, $change_accepter_forum, $change_petition, $changer_lang, $changer_virtuel, $chapo, $cherche_auteur, $cherche_mot, $connect_id_auteur, $date, $date_redac, $debut, $descriptif, $email_unique, $heure, $heure_redac, $id_article, $id_article_bloque, $id_parent, $id_rubrique_old, $id_secteur, $jour, $jour_redac, $langue_article, $lier_trad, $message, $minute, $minute_redac, $mois, $mois_redac, $new, $nom_select, $nom_site, $nouv_auteur, $nouv_mot, $ps, $row, $site_obli, $site_unique, $soustitre, $supp_auteur, $supp_mot, $surtitre, $texte, $texte_petition, $texte_plus, $titre, $titre_article, $url_site, $virtuel;
$id_parent = intval($id_parent);
$nouv_auteur = intval($nouv_auteur);
if (!($id_article=intval($id_article))) {
$id_article = insert_article($id_parent, $new);
add_auteur_article($id_article, $connect_id_auteur);
}
// aucun doc implicitement inclus au départ.
inclus_non_articles($id_article);
if ($row = spip_fetch_array(spip_query("SELECT statut, titre, id_rubrique FROM spip_articles WHERE id_article=$id_article"))) {
$statut_article = $row['statut'];
$titre_article = $row['titre'];
$id_rubrique = $row['id_rubrique'];
$statut_rubrique = acces_rubrique($id_rubrique);
if ($titre_article=='') $titre_article = _T('info_sans_titre');
}
else {
$statut_article = '';
$statut_rubrique = false;
$id_rubrique = '0';
if ($titre=='') $titre = _T('info_sans_titre');
}
$flag_auteur = spip_num_rows(spip_query("SELECT id_auteur FROM spip_auteurs_articles WHERE id_article=$id_article AND id_auteur=$connect_id_auteur LIMIT 1"));
$flag_editable = ($statut_rubrique OR ($flag_auteur AND $flag_editable));
if ($flag_editable) {
if ($jour) {
$date = format_mysql_date($annee, $mois, $jour, $heure, $minute);
spip_query("UPDATE spip_articles SET date='$date', date_modif=NOW()
WHERE id_article=$id_article");
calculer_rubriques();
}
if ($jour_redac) {
if ($annee_redac<>'' AND $annee_redac < 1001) $annee_redac += 9000;
if ($avec_redac == 'non')
$date_redac = format_mysql_date();
else
$date_redac = format_mysql_date(
$annee_redac, $mois_redac, $jour_redac,
$heure_redac, $minute_redac);
spip_query("UPDATE spip_articles SET date_redac='$date_redac', date_modif=NOW() WHERE id_article=$id_article");
}
modif_langue_articles($id_article, $id_rubrique, $changer_lang);
maj_documents($id_article, 'article');
if ($changer_virtuel) {
$virtuel = eregi_replace("^http://$", "", trim($virtuel));
if ($virtuel) $chapo = addslashes(corriger_caracteres("=$virtuel"));
else $chapo = "";
spip_query("UPDATE spip_articles SET chapo='$chapo', date_modif=NOW() WHERE id_article=$id_article");
}
if ($titre) {
// prendre en compte le changement eventuel, et seulement si autorise
if ($id_parent AND ($flag_auteur OR acces_rubrique($id_parent))) {
$id_rubrique = $id_parent;
}
$champs = array(
'surtitre' => corriger_caracteres($surtitre),
'titre' => ($titre_article=corriger_caracteres($titre)),
'soustitre' => corriger_caracteres($soustitre),
'descriptif' => corriger_caracteres($descriptif),
'nom_site' => corriger_caracteres($nom_site),
'url_site' => corriger_caracteres($url_site),
'chapo' => corriger_caracteres($chapo),
'texte' => corriger_caracteres(trop_longs_articles($texte_plus) . $texte),
'ps' => corriger_caracteres($ps)) ;
revisions_articles ($id_article, $id_secteur, $id_rubrique, $id_rubrique_old,
($flag_auteur||$statut_rubrique),
$new, $champs);
$id_article_bloque = $id_article; // message pour inc/presentation
}
}
exec_affiche_articles_dist($id_article, $ajout_auteur, $change_accepter_forum, $change_petition, $changer_virtuel, $cherche_auteur, $cherche_mot, $debut, $email_unique, $flag_auteur, $flag_editable, $langue_article, $message, $nom_select, $nouv_auteur, $nouv_mot, $id_rubrique, $site_obli, $site_unique, $supp_auteur, $supp_mot, $texte_petition, $titre_article, $lier_trad);
}
?>