diff --git a/ecrire/inc_majbase.php3 b/ecrire/inc_majbase.php3 index 72241b0fb5f8a623432bdf6781c7f1f1cd267a42..28dc1080d58746a9f78542201f14783de1df93ff 100644 --- a/ecrire/inc_majbase.php3 +++ b/ecrire/inc_majbase.php3 @@ -994,6 +994,8 @@ function maj_base() { if ($version_installee < 1.816) { maj_version(1.816); } + + // Texte et descriptif des groupes de mots-cles if ($version_installee < 1.817) { spip_query("ALTER TABLE spip_groupes_mots ADD descriptif text NOT NULL AFTER titre"); @@ -1001,6 +1003,8 @@ function maj_base() { ADD COLUMN texte longblob NOT NULL AFTER descriptif"); maj_version(1.817); } + + // Conformite des noms de certains champs (0minirezo => minirezo) if ($version_installee < 1.818) { spip_query("ALTER TABLE spip_groupes_mots CHANGE COLUMN 0minirezo minirezo char(3) NOT NULL"); spip_query("ALTER TABLE spip_groupes_mots CHANGE COLUMN 1comite comite char(3) NOT NULL"); @@ -1008,6 +1012,15 @@ function maj_base() { maj_version(1.818); } + // Options de syndication : miroir + oubli + if ($version_installee < 1.819) { + spip_query("ALTER TABLE spip_syndic + ADD miroir VARCHAR(3) DEFAULT 'non'"); + spip_query("ALTER TABLE spip_syndic + ADD oubli VARCHAR(3) DEFAULT 'non'"); + maj_version(1.819); + } + return true; } diff --git a/ecrire/inc_serialbase.php3 b/ecrire/inc_serialbase.php3 index 923a8196ed8d7b59fef28f11d131ddfe9ba65ece..281e317be0463225eeb5616349e16ede200762a1 100644 --- a/ecrire/inc_serialbase.php3 +++ b/ecrire/inc_serialbase.php3 @@ -252,7 +252,10 @@ $spip_syndic = array( "date_syndic" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", "date_index" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", "extra" => "longblob NULL", - "moderation" => "VARCHAR(3) NOT NULL"); + "moderation" => "VARCHAR(3) DEFAULT 'non'", + "miroir" => "VARCHAR(3) DEFAULT 'non'", + "oubli" => "VARCHAR(3) DEFAULT 'non'" +); $spip_syndic_key = array( "PRIMARY KEY" => "id_syndic", diff --git a/ecrire/inc_sites.php3 b/ecrire/inc_sites.php3 index e8817b153842b4ec15d4acb38a8d9b53bb36d967..b026bcd0df8902f005981c494efb0287a12c68e2 100644 --- a/ecrire/inc_sites.php3 +++ b/ecrire/inc_sites.php3 @@ -668,11 +668,39 @@ function syndic_a_jour($now_id_syndic, $statut = 'off') { // Les enregistrer dans la base if (is_array($articles)) { + $urls = array(); foreach ($articles as $data) { - if ($data['url']) + if ($data['url']) { inserer_article_syndique ($data, $now_id_syndic, $moderation, $url_site); + $urls[] = $data['url']; + } + } + + // moderation automatique des liens qui sont sortis du feed + if (count($urls) > 0 + AND $row['miroir'] == 'oui') { + spip_query("UPDATE spip_syndic_articles + SET statut='off', maj=maj + WHERE id_syndic=$now_id_syndic + AND NOT (url IN ('" + . join("','", array_map('addslashes',$urls)) + . "'))"); + } + + // suppression apres 2 mois des liens qui sont sortis du feed + if (count($urls) > 0 + AND $row['oubli'] == 'oui') { + $time = date('U') - 61*24*3600; # deux mois + spip_query("DELETE FROM spip_syndic_articles + WHERE id_syndic=$now_id_syndic + AND UNIX_TIMESTAMP(maj) < $time + AND UNIX_TIMESTAMP(date) < $time + AND NOT (url IN ('" + . join("','", array_map('addslashes',$urls)) + . "'))"); } + // Noter que la syndication est OK spip_query("UPDATE spip_syndic SET syndication='oui' WHERE id_syndic='$now_id_syndic'"); @@ -891,7 +919,7 @@ function afficher_syndic_articles($titre_table, $requete, $afficher_site = false $puce = 'puce-rouge.gif'; } - else if ($statut == "off") { // vieillerie + else if ($statut == "off") { // feed d'un site en mode "miroir" $puce = 'puce-rouge-anim.gif'; } @@ -899,7 +927,10 @@ function afficher_syndic_articles($titre_table, $requete, $afficher_site = false $vals[] = $s; $s = "<a href='$url'>$titre</a>"; - if (strlen($lesauteurs) > 0) $s .= " ($lesauteurs)"; + + $date = affdate_court($date); + if (strlen($lesauteurs) > 0) $date = $lesauteurs.', '.$date; + $s.= " ($date)"; // S'il y a des fichiers joints (enclosures), on les affiche ici if (spip_num_rows($q = spip_query("SELECT docs.* FROM spip_documents AS docs, spip_documents_syndic AS lien WHERE lien.id_syndic_article = $id_syndic_article AND lien.id_document = docs.id_document"))) { @@ -918,11 +949,11 @@ function afficher_syndic_articles($titre_table, $requete, $afficher_site = false $vals[] = $s; // $my_sites cache les resultats des requetes sur les sites - if ($afficher_site) { - if (!$my_sites[$id_syndic]) - $my_sites[$id_syndic] = spip_fetch_array(spip_query( - "SELECT * FROM spip_syndic WHERE id_syndic=$id_syndic")); + if (!$my_sites[$id_syndic]) + $my_sites[$id_syndic] = spip_fetch_array(spip_query( + "SELECT * FROM spip_syndic WHERE id_syndic=$id_syndic")); + if ($afficher_site) { $aff = $my_sites[$id_syndic]['nom_site']; if ($my_sites[$id_syndic]['moderation'] == 'oui') $s = "<i>$aff</i>"; @@ -943,7 +974,12 @@ function afficher_syndic_articles($titre_table, $requete, $afficher_site = false else if ($statut == "refuse"){ $s = "[<a href='".$adresse_page.$lien_url."id_syndic=$id_syndic&ajouter_lien=$id_syndic_article'>"._T('info_retablir_lien')."</a>]"; } - else /* if ($statut == "dispo") */ { + else if ($statut == "off" + AND $my_sites[$id_syndic]['miroir'] == 'oui') { + $s = '('._T('syndic_lien_obsolete').')'; + } + else /* 'dispo' ou 'off' (dans le cas ancien site 'miroir') */ + { $s = "[<a href='".$adresse_page.$lien_url."id_syndic=$id_syndic&ajouter_lien=$id_syndic_article'>"._T('info_valider_lien')."</a>]"; } $vals[] = $s; diff --git a/ecrire/inc_version.php3 b/ecrire/inc_version.php3 index f70c4c27817a6a74ba8ad0912e884d0d30c43a8f..43e43b4188494e0b826b41604260118a11cb0425 100644 --- a/ecrire/inc_version.php3 +++ b/ecrire/inc_version.php3 @@ -412,7 +412,7 @@ define_once('_AUTH_USER_FILE', '.htpasswd'); // (utilise pour les modifs de la base de donnees) // version de la base -$spip_version = 1.818; +$spip_version = 1.819; // version de spip $spip_version_affichee = "1.8.2 CVS beta 2"; diff --git a/ecrire/sites.php3 b/ecrire/sites.php3 index bd00809a2822a5e06ada08fbbf8ef26ddf94c43c..d517f0f8914330ec5f7222124bf429c46d486da7 100644 --- a/ecrire/sites.php3 +++ b/ecrire/sites.php3 @@ -17,6 +17,7 @@ include_ecrire ("inc_mots.php3"); include_ecrire ("inc_sites.php3"); include_ecrire ("inc_date.php3"); include_ecrire ("inc_abstract_sql.php3"); +include_ecrire ("inc_config.php3"); $proposer_sites = lire_meta("proposer_sites"); @@ -51,10 +52,10 @@ if ($new == 'oui') { "(nom_site, id_rubrique, id_secteur, date, date_syndic, statut, syndication, moderation)", "('"._T('avis_site_introuvable')."', $id_rubrique, $id_rubrique, NOW(), NOW(), 'refuse', 'non', '$moderation')"); } -} +} else $id_syndic = intval($id_syndic); -$query = "SELECT statut, id_rubrique FROM spip_syndic WHERE id_syndic='$id_syndic'"; -$result = spip_query($query); +$result = spip_query("SELECT statut, id_rubrique FROM spip_syndic + WHERE id_syndic=$id_syndic"); if ($row = spip_fetch_array($result)) { $statut = $row["statut"]; @@ -81,10 +82,11 @@ if ($analyser_site == 'oui' AND $flag_editable) { $url_syndic = addslashes($v['url_syndic']); $descriptif = addslashes($v['descriptif']); $syndication = $v[syndic] ? 'oui' : 'non'; - $query = "UPDATE spip_syndic ". - "SET nom_site='$nom_site', url_site='$url_site', url_syndic='$url_syndic', descriptif='$descriptif', syndication='$syndication', statut='$statut' ". - "WHERE id_syndic=".intval($id_syndic); - $result = spip_query($query); + $result = spip_query("UPDATE spip_syndic ". + "SET nom_site='$nom_site', url_site='$url_site', + url_syndic='$url_syndic', descriptif='$descriptif', + syndication='$syndication', statut='$statut' + WHERE id_syndic=$id_syndic"); if ($syndication == 'oui') syndic_a_jour($id_syndic); $link = new Link('sites.php3'); $link->addVar('id_syndic'); @@ -101,13 +103,12 @@ if ($analyser_site == 'oui' AND $flag_editable) { if ($nouveau_statut AND $flag_administrable) { $statut = $nouveau_statut; - $query = "UPDATE spip_syndic SET statut='$statut' WHERE id_syndic=".intval($id_syndic); - $result = spip_query($query); - //if ($statut == 'refuse') $redirect_ok = 'oui'; - if ($statut == 'publie') { - $query = "UPDATE spip_syndic SET date=NOW() WHERE id_syndic=".intval(id_syndic); - $result = spip_query($query); - } + $result = spip_query("UPDATE spip_syndic SET statut='$statut' + WHERE id_syndic=$id_syndic"); + if ($statut == 'publie') + spip_query("UPDATE spip_syndic SET date=NOW() WHERE + id_syndic=$id_syndic"); + calculer_rubriques(); if ($statut == 'publie') { if (lire_meta('activer_moteur') == 'oui') { @@ -133,15 +134,18 @@ if ($nom_site AND $modifier_site == 'oui' AND $flag_editable) { - $query = "UPDATE spip_syndic SET id_rubrique='$id_rubrique', nom_site='$nom_site', url_site='$url_site', url_syndic='$url_syndic', descriptif='$descriptif', syndication='$syndication', statut='$statut' $add_extra WHERE id_syndic=".intval($id_syndic); - $result = spip_query($query); + spip_query("UPDATE spip_syndic SET id_rubrique='$id_rubrique', + nom_site='$nom_site', url_site='$url_site', url_syndic='$url_syndic', + descriptif='$descriptif', syndication='$syndication', statut='$statut' + $add_extra WHERE id_syndic=$id_syndic"); - if ($syndication_old != $syndication OR $url_syndic != $old_syndic) { + if ($syndication_old != $syndication OR $url_syndic != $old_syndic) $reload = "oui"; - } - if ($syndication_old != $syndication AND $syndication == "non") { - spip_query("DELETE FROM spip_syndic_articles WHERE id_syndic='$id_syndic'"); - } + + if ($syndication_old != $syndication AND $syndication == "non") + spip_query("DELETE FROM spip_syndic_articles + WHERE id_syndic=$id_syndic"); + calculer_rubriques(); // invalider et reindexer @@ -167,8 +171,8 @@ if ($nom_site AND $modifier_site == 'oui' AND $flag_editable) { if ($jour AND $flag_administrable) { if ($annee == "0000") $mois = "00"; if ($mois == "00") $jour = "00"; - $query = "UPDATE spip_syndic SET date='$annee-$mois-$jour' WHERE id_syndic=".intval($id_syndic); - $result = spip_query($query); + spip_query("UPDATE spip_syndic SET date='$annee-$mois-$jour' + WHERE id_syndic=$id_syndic"); calculer_rubriques(); } @@ -182,8 +186,9 @@ if ($redirect AND $redirect_ok == 'oui') { // // reload // -if ($reload == "oui") { - $result = spip_query ("SELECT * FROM spip_syndic WHERE id_syndic='$id_syndic' AND syndication IN ('oui', 'sus', 'off')"); +if ($reload) { + $result = spip_query ("SELECT * FROM spip_syndic WHERE id_syndic=$id_syndic + AND syndication IN ('oui', 'sus', 'off')"); if ($result AND spip_num_rows($result)>0) $erreur_syndic = syndic_a_jour ($id_syndic); } @@ -195,8 +200,7 @@ if ($reload == "oui") { calculer_droits(); -$query = "SELECT * FROM spip_syndic WHERE id_syndic='$id_syndic'"; -$result = spip_query($query); +$result = spip_query("SELECT * FROM spip_syndic WHERE id_syndic=$id_syndic"); if ($row = spip_fetch_array($result)) { $id_syndic = $row["id_syndic"]; @@ -372,30 +376,80 @@ if ($syndication == "oui" OR $syndication == "off" OR $syndication == "sus") { fin_boite_info(); } afficher_syndic_articles(_T('titre_articles_syndiques'), - "SELECT * FROM spip_syndic_articles WHERE id_syndic='$id_syndic' ORDER BY date DESC"); + "SELECT * FROM spip_syndic_articles WHERE id_syndic=$id_syndic + ORDER BY date DESC"); echo "<font face='verdana,arial,helvetica' size=2>"; // afficher la date de dernier acces a la syndication if ($date_syndic) echo "<p><div align='left'>"._T('info_derniere_syndication').' '.affdate_heure($date_syndic) - .".</div><div align='right'><a href='sites.php3?id_syndic=$id_syndic&reload=oui'>"._T('lien_mise_a_jour_syndication')."</a></div>\n"; - - // modifier la moderation + .".</div>\n"; + + echo "<div align='right'>\n" + . "<form method='post' action='sites.php3?id_syndic=$id_syndic'>" + . "<input type='submit' name='reload' value=\"" + . attribut_html(_T('lien_mise_a_jour_syndication')) + . "\" class='fondo' style='font-size:9px;' /></form></div>\n"; + + // Options if ($flag_administrable && $options=='avancees') { + + debut_cadre_relief(); + echo "<u>"._T('syndic_options')."</u>" + . aide('artsyn')."\n" + . "<form method='POST' action='sites.php3?id_syndic=$id_syndic' class='verdana2'>\n"; + + // modifier la moderation if ($moderation == 'oui' OR $moderation == 'non') - spip_query("UPDATE spip_syndic SET moderation='$moderation' WHERE id_syndic=".intval($id_syndic)); + spip_query("UPDATE spip_syndic SET moderation='$moderation' + WHERE id_syndic=$id_syndic"); else $moderation = $mod; - - if ($moderation == 'non' || $moderation =='') - echo "<p><div align='left'>"._T('texte_liens_syndication'). aide('artsyn') . - "</div><div align='right'><a - href='sites.php3?id_syndic=$id_syndic&moderation=oui'>"._T('info_demander_blocage_priori')."</a></div>\n"; - else if ($moderation == 'oui') - echo "<p><div align='left'>"._T('texte_demander_blocage_priori'). aide('artsyn') . - "</div><div align='right'> <a - href='sites.php3?id_syndic=$id_syndic&moderation=non'>"._T('info_annuler_blocage_priori')."</a></div>\n"; + if ($moderation != 'oui') $moderation='non'; + + echo "<p><div align='$spip_lang_left'>" + . _T('syndic_choix_moderation') . "<br />\n"; + afficher_choix('moderation', $moderation, + array( + 'non' => _T('info_publier') + .' ('._T('bouton_radio_modere_posteriori').')', + 'oui' => _T('info_bloquer') + .' ('._T('bouton_radio_modere_priori').')' + )); + + // Oublier les vieux liens ? + # appliquer les choix + if ($miroir == 'oui' OR $miroir == 'non') + spip_query("UPDATE spip_syndic SET miroir='$miroir' + WHERE id_syndic=$id_syndic"); + if ($oubli == 'oui' OR $oubli == 'non') + spip_query("UPDATE spip_syndic SET oubli='$oubli' + WHERE id_syndic=$id_syndic"); + + echo "<p><div align='left'>"._T('syndic_choix_oublier'); + + # miroir + if (!$miroir AND !$miroir = $row['miroir']) $miroir = 'non'; + echo "<li>"._T('syndic_option_miroir').' '; + afficher_choix('miroir', $miroir, + array('oui' => _T('item_oui'), 'non' => _T('item_non')), + " "); + echo "</li>\n"; + + # oubli + if (!$oubli AND !$oubli = $row['oubli']) $oubli = 'non'; + echo "<li>"._T('syndic_option_oubli', array('mois' => 2)).' '; + afficher_choix('oubli', $oubli, + array('oui' => _T('item_oui'), 'non' => _T('item_non')), + " "); + echo "</li>\n"; + + // Bouton "Valider" + echo "<div style='text-align:$spip_lang_right'><INPUT TYPE='submit' NAME='Valider' VALUE='"._T('bouton_valider')."' CLASS='fondo'></div>"; + + + fin_cadre_relief(); } echo "</font>"; } @@ -460,8 +514,8 @@ echo "</div>"; echo "<p align='left'>\n"; -$query_forum = "SELECT * FROM spip_forum WHERE statut='prive' AND id_syndic='$id_syndic' AND id_parent=0 ORDER BY date_heure DESC LIMIT 0,20"; -$result_forum = spip_query($query_forum); +$result_forum = spip_query("SELECT * FROM spip_forum WHERE statut='prive' +AND id_syndic=$id_syndic AND id_parent=0 ORDER BY date_heure DESC LIMIT 0,20"); afficher_forum($result_forum, $forum_retour);