Changeset 93624 in spip-zone
- Timestamp:
- Dec 13, 2015, 11:54:48 AM (5 years ago)
- Location:
- _core_/plugins/sites
- Files:
-
- 28 edited
Legend:
- Unmodified
- Added
- Removed
-
_core_/plugins/sites/action/editer_site.php
r93545 r93624 13 13 /** 14 14 * Gestion de l'action editer__site et de l'API d'édition d'un site 15 * 15 * 16 16 * @package SPIP\Sites\Edition 17 17 */ 18 19 if (!defined("_ECRIRE_INC_VERSION")) return; 18 19 if (!defined("_ECRIRE_INC_VERSION")) { 20 return; 21 } 20 22 21 23 … … 28 30 * à condition que la rubrique parente (id_rubrique) puisse être obtenue 29 31 * (avec _request(id_parent)) 30 * 32 * 31 33 * @uses site_inserer() 32 34 * @uses site_modifier() 33 * 35 * 34 36 * @param null|int $arg 35 37 * Identifiant du site. En absence utilise l'argument … … 40 42 function action_editer_site_dist($arg = null) { 41 43 42 if (is_null($arg)) {44 if (is_null($arg)) { 43 45 $securiser_action = charger_fonction('securiser_action', 'inc'); 44 46 $arg = $securiser_action(); 45 47 } 46 48 47 if (!$id_syndic = intval($arg)) {49 if (!$id_syndic = intval($arg)) { 48 50 $id_syndic = site_inserer(_request('id_parent')); 49 51 if ($logo = _request('logo') 50 AND $format_logo = _request('format_logo')) { 52 AND $format_logo = _request('format_logo') 53 ) { 51 54 include_spip('inc/distant'); 52 55 $logo = _DIR_RACINE . copie_locale($logo); 53 @rename($logo, _DIR_IMG . 'siteon'.$id_syndic.'.'.$format_logo);56 @rename($logo, _DIR_IMG . 'siteon' . $id_syndic . '.' . $format_logo); 54 57 } 55 58 } 56 59 57 if (!$id_syndic) 58 return array(0,''); 60 if (!$id_syndic) { 61 return array(0, ''); 62 } 59 63 60 64 $err = site_modifier($id_syndic); 61 65 62 return array($id_syndic, $err);66 return array($id_syndic, $err); 63 67 } 64 68 … … 69 73 * @pipeline_appel pre_insertion 70 74 * @pipeline_appel post_insertion 71 * 75 * 72 76 * @param int $id_rubrique 73 77 * Identifiant de rubrique parente … … 83 87 // dans la premiere rubrique racine 84 88 if (!$id_rubrique = intval($id_rubrique)) { 85 $id_rubrique = sql_getfetsel("id_rubrique", "spip_rubriques", "id_parent=0", '', '0+titre,titre', "1");89 $id_rubrique = sql_getfetsel("id_rubrique", "spip_rubriques", "id_parent=0", '', '0+titre,titre', "1"); 86 90 } 87 91 88 92 // Le secteur a la creation : c'est le secteur de la rubrique 89 $id_secteur = sql_getfetsel("id_secteur", "spip_rubriques", "id_rubrique=" .intval($id_rubrique));93 $id_secteur = sql_getfetsel("id_secteur", "spip_rubriques", "id_rubrique=" . intval($id_rubrique)); 90 94 // eviter un null si la rubrique n'existe pas (rubrique -1 par exemple) 91 if (!$id_secteur) 95 if (!$id_secteur) { 92 96 $id_secteur = 0; 97 } 93 98 94 99 $champs = array( … … 96 101 'id_secteur' => $id_secteur, 97 102 'statut' => 'prop', 98 'date' => date('Y-m-d H:i:s')); 99 100 if ($set) 103 'date' => date('Y-m-d H:i:s') 104 ); 105 106 if ($set) { 101 107 $champs = array_merge($champs, $set); 108 } 102 109 103 110 // Envoyer aux plugins … … 132 139 * @uses objet_modifier_champs() 133 140 * @uses objet_instituer() 134 * 141 * 135 142 * @param int $id_syndic 136 143 * Identifiant du site à modifier … … 149 156 include_spip('inc/modifier'); 150 157 $c = collecter_requests( 151 // white list 152 array( 153 'nom_site', 'url_site', 'descriptif', 'url_syndic', 'syndication', 154 'moderation','miroir','oubli','resume' 158 // white list 159 array( 160 'nom_site', 161 'url_site', 162 'descriptif', 163 'url_syndic', 164 'syndication', 165 'moderation', 166 'miroir', 167 'oubli', 168 'resume' 155 169 ), 156 170 // black list … … 161 175 162 176 // resyndiquer si un element de syndication modifie 163 if ($t = sql_fetsel('url_syndic,syndication,resume', 'spip_syndic', "id_syndic=" .intval($id_syndic))){164 foreach ($t as $k=>$v)165 if (isset($c[$k]) AND $v !=$c[$k])177 if ($t = sql_fetsel('url_syndic,syndication,resume', 'spip_syndic', "id_syndic=" . intval($id_syndic))) { 178 foreach ($t as $k => $v) { 179 if (isset($c[$k]) AND $v != $c[$k]) { 166 180 $resyndiquer = true; 181 } 182 } 167 183 } 168 184 169 185 // Si le site est publie, invalider les caches et demander sa reindexation 170 $t = sql_getfetsel("statut", "spip_syndic", "id_syndic=" .intval($id_syndic));186 $t = sql_getfetsel("statut", "spip_syndic", "id_syndic=" . intval($id_syndic)); 171 187 $invalideur = $indexation = false; 172 188 if ($t == 'publie') { … … 182 198 'indexation' => $indexation 183 199 ), 184 $c)) 200 $c) 201 ) { 185 202 return $err; 186 187 188 if ($resyndiquer AND sql_getfetsel('syndication','spip_syndic',"id_syndic=".intval($id_syndic))!=='non') { 189 $syndiquer_site = charger_fonction('syndiquer_site','action'); 203 } 204 205 206 if ($resyndiquer AND sql_getfetsel('syndication', 'spip_syndic', "id_syndic=" . intval($id_syndic)) !== 'non') { 207 $syndiquer_site = charger_fonction('syndiquer_site', 'action'); 190 208 $syndiquer_site($id_syndic); 191 209 } … … 193 211 194 212 // Modification de statut, changement de rubrique ? 195 $c = collecter_requests(array('date', 'statut', 'id_parent'), array(),$set);213 $c = collecter_requests(array('date', 'statut', 'id_parent'), array(), $set); 196 214 include_spip('action/editer_objet'); 197 $err = objet_instituer('site', $id_syndic, $c);215 $err = objet_instituer('site', $id_syndic, $c); 198 216 199 217 return $err; … … 212 230 * @param int $id_rubrique 213 231 * @return int 214 **/232 **/ 215 233 function insert_syndic($id_rubrique) { 216 234 return site_inserer($id_rubrique); … … 226 244 * @param array|bool $set 227 245 * @return string 228 **/246 **/ 229 247 function syndic_set($id_syndic, $set = false) { 230 return site_modifier($id_syndic, $set);248 return site_modifier($id_syndic, $set); 231 249 } 232 250 … … 240 258 * @param array|bool $set 241 259 * @return string 242 **/243 function revisions_sites($id_syndic, $set = false) {244 return site_modifier($id_syndic, $set);260 **/ 261 function revisions_sites($id_syndic, $set = false) { 262 return site_modifier($id_syndic, $set); 245 263 } 246 264 … … 255 273 * @param bool $calcul_rub 256 274 * @return string 257 **/258 function instituer_syndic($id_syndic, $c, $calcul_rub = true) {275 **/ 276 function instituer_syndic($id_syndic, $c, $calcul_rub = true) { 259 277 include_spip('action/editer_objet'); 260 return objet_instituer('site',$id_syndic, $c, $calcul_rub); 261 } 278 279 return objet_instituer('site', $id_syndic, $c, $calcul_rub); 280 } 281 262 282 ?> -
_core_/plugins/sites/action/exporter_bookmarks.php
r93092 r93624 11 11 \***************************************************************************/ 12 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; 13 if (!defined("_ECRIRE_INC_VERSION")) { 14 return; 15 } 14 16 15 function action_exporter_bookmarks_dist($arg = null) {17 function action_exporter_bookmarks_dist($arg = null) { 16 18 17 if (is_null($arg)) {19 if (is_null($arg)) { 18 20 $securiser_action = charger_fonction('securiser_action', 'inc'); 19 21 $arg = $securiser_action(); 20 22 } 21 23 22 if (autoriser('exporter', '_sites')){23 list($id_parent, $exporter_publie_seulement,$exporter_avec_mots_cles) = explode("-",$arg);24 $statut = ($exporter_publie_seulement ?array('publie'):array('prop','publie'));24 if (autoriser('exporter', '_sites')) { 25 list($id_parent, $exporter_publie_seulement, $exporter_avec_mots_cles) = explode("-", $arg); 26 $statut = ($exporter_publie_seulement ? array('publie') : array('prop', 'publie')); 25 27 26 $f = "bookmarks-" .date('Y-m-d').".html";28 $f = "bookmarks-" . date('Y-m-d') . ".html"; 27 29 header('Content-Type: text/html'); 28 30 header("Content-Disposition: attachment; filename=\"$f\";"); … … 33 35 header("Expires: 0"); // set expiration time 34 36 header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 35 echo recuperer_fond("prive/transmettre/bookmarks",array('statut'=>$statut,'id_parent'=>intval($id_parent),'tags'=>$exporter_avec_mots_cles)); 37 echo recuperer_fond("prive/transmettre/bookmarks", 38 array('statut' => $statut, 'id_parent' => intval($id_parent), 'tags' => $exporter_avec_mots_cles)); 36 39 } 37 40 } -
_core_/plugins/sites/action/importer_bookmarks_netscape.php
r93092 r93624 11 11 \***************************************************************************/ 12 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; 13 if (!defined("_ECRIRE_INC_VERSION")) { 14 return; 15 } 14 16 15 function action_importer_bookmarks_netscape_dist($fichier_ok, $id_parent, $importer_statut_publie, $importer_tags) {17 function action_importer_bookmarks_netscape_dist($fichier_ok, $id_parent, $importer_statut_publie, $importer_tags) { 16 18 17 19 $nb = 0; 18 if (autoriser('importer', '_sites')){20 if (autoriser('importer', '_sites')) { 19 21 $out = bookmarks_netscape_fast_parse($fichier_ok['contenu']); 20 22 21 23 // le premier content ne nous interesse pas 22 24 $out = reset($out['sub']); 23 $nb = bookmarks_insert($out, $id_parent,$importer_statut_publie,$importer_tags);25 $nb = bookmarks_insert($out, $id_parent, $importer_statut_publie, $importer_tags); 24 26 } 27 25 28 return $nb; 26 29 } 27 30 28 function bookmarks_netscape_fast_parse(&$contenu) {31 function bookmarks_netscape_fast_parse(&$contenu) { 29 32 $out = array(); 30 33 #var_dump(">>".substr($contenu,0,200)); 31 34 32 $po =stripos($contenu,"<h3",4);33 $pf =stripos($contenu,"</dl>");34 while ($po OR $pf) {35 $po = stripos($contenu, "<h3", 4); 36 $pf = stripos($contenu, "</dl>"); 37 while ($po OR $pf) { 35 38 #var_dump("$po:$pf"); 36 if ($po >0 AND $po<$pf){37 $out['content'] .= substr($contenu, 0,$po);38 $contenu = substr($contenu, $po);39 if ($po > 0 AND $po < $pf) { 40 $out['content'] .= substr($contenu, 0, $po); 41 $contenu = substr($contenu, $po); 39 42 $out['sub'][] = bookmarks_netscape_fast_parse($contenu); 40 } 41 else { 43 } else { 42 44 43 $out['content'] .= substr($contenu, 0,$pf);44 $contenu = substr($contenu, $pf+5);45 $out['content'] .= substr($contenu, 0, $pf); 46 $contenu = substr($contenu, $pf+5); 45 47 #var_dump("<<".substr($contenu,0,200)); 46 48 $out['content'] = bookmarks_extract_links($out['content']); 49 47 50 return $out; 48 51 } 49 $po =stripos($contenu,"<h3");50 $pf =stripos($contenu,"</dl>");52 $po = stripos($contenu, "<h3"); 53 $pf = stripos($contenu, "</dl>"); 51 54 } 52 55 $out['content'] = bookmarks_extract_links($out['content']); 56 53 57 return $out; 54 58 } 55 59 56 function bookmarks_extract_links($contenu) {60 function bookmarks_extract_links($contenu) { 57 61 $out = array(); 58 $contenu = str_ireplace("<DT>", "<dt>",$contenu);59 $contenu = explode("<dt>", $contenu);62 $contenu = str_ireplace("<DT>", "<dt>", $contenu); 63 $contenu = explode("<dt>", $contenu); 60 64 61 65 $h3 = array_shift($contenu); 62 $h3 = extraire_balise($h3, "h3");66 $h3 = extraire_balise($h3, "h3"); 63 67 $out['titre'] = strip_tags($h3); 64 68 65 foreach ($contenu as $item){69 foreach ($contenu as $item) { 66 70 $link = array(); 67 if ($a = extraire_balise($item, 'a')){68 $link['url'] = extraire_attribut($a, 'href');71 if ($a = extraire_balise($item, 'a')) { 72 $link['url'] = extraire_attribut($a, 'href'); 69 73 $link['titre'] = strip_tags($a); 70 $link['date'] = extraire_attribut($a, "add_date");74 $link['date'] = extraire_attribut($a, "add_date"); 71 75 $link['descriptif'] = ""; 72 76 73 if ($p =stripos($item,"<dd>")){74 $link['descriptif'] = textebrut(substr($item, $p));77 if ($p = stripos($item, "<dd>")) { 78 $link['descriptif'] = textebrut(substr($item, $p)); 75 79 } 76 80 $out['links'][] = $link; 77 81 } 78 82 } 83 79 84 return $out; 80 85 } 81 86 82 function bookmarks_insert($tree, $id_parent, $importer_statut_publie, $importer_tags, $level = 0) {87 function bookmarks_insert($tree, $id_parent, $importer_statut_publie, $importer_tags, $level = 0) { 83 88 include_spip('action/editer_rubrique'); 84 89 include_spip('action/editer_site'); … … 86 91 $nb = 0; 87 92 if (count($tree['content']['links']) 88 OR isset($tree['sub'])){ 93 OR isset($tree['sub']) 94 ) { 89 95 90 $titre = ($tree['content']['titre']?$tree['content']['titre']:_T('info_sans_titre')); 91 $id_rubrique = sql_getfetsel('id_rubrique','spip_rubriques','id_parent='.intval($id_parent)." AND titre=".sql_quote($titre)); 96 $titre = ($tree['content']['titre'] ? $tree['content']['titre'] : _T('info_sans_titre')); 97 $id_rubrique = sql_getfetsel('id_rubrique', 'spip_rubriques', 98 'id_parent=' . intval($id_parent) . " AND titre=" . sql_quote($titre)); 92 99 if (!$id_rubrique 93 AND $id_rubrique = rubrique_inserer($id_parent)){ 94 rubrique_modifier($id_rubrique,array('titre'=>$titre)); 100 AND $id_rubrique = rubrique_inserer($id_parent) 101 ) { 102 rubrique_modifier($id_rubrique, array('titre' => $titre)); 95 103 } 96 if ($id_rubrique) {104 if ($id_rubrique) { 97 105 $statut = 'prop'; 98 if ($importer_statut_publie AND autoriser('publierdans', 'rubrique',$id_rubrique))106 if ($importer_statut_publie AND autoriser('publierdans', 'rubrique', $id_rubrique)) { 99 107 $statut = 'publie'; 108 } 100 109 $now = time(); 101 foreach ($tree['content']['links'] as $link){110 foreach ($tree['content']['links'] as $link) { 102 111 if (!$id_syndic = sql_getfetsel('id_syndic', 103 'spip_syndic', 104 'id_rubrique='.intval($id_rubrique)." AND url_site=".sql_quote($link['url']))){ 112 'spip_syndic', 113 'id_rubrique=' . intval($id_rubrique) . " AND url_site=" . sql_quote($link['url'])) 114 ) { 105 115 $id_syndic = site_inserer($id_rubrique); 106 116 $set = array( 107 108 109 'date' => date('Y-m-d H:i:s',$link['date']?$link['date']:$now),110 111 112 117 'url_site' => $link['url'], 118 'nom_site' => $link['titre'], 119 'date' => date('Y-m-d H:i:s', $link['date'] ? $link['date'] : $now), 120 'statut' => $statut, 121 'descriptif' => $link['descriptif'] 122 ); 113 123 #echo "creation site $id_syndic ".$set['url_site']." <br />"; 114 site_modifier($id_syndic,$set); 115 $nb ++; 116 } 117 else { 124 site_modifier($id_syndic, $set); 125 $nb++; 126 } else { 118 127 #echo "existant site $id_syndic ".$link['url']." <br />"; 119 $nb 128 $nb++; 120 129 } 121 130 } 122 if ($level<30){ 123 if (isset($tree['sub'])) 124 foreach($tree['sub'] as $sub) 125 $nb += bookmarks_insert($sub,$id_rubrique,$importer_statut_publie,$importer_tags,$level+1); 131 if ($level < 30) { 132 if (isset($tree['sub'])) { 133 foreach ($tree['sub'] as $sub) { 134 $nb += bookmarks_insert($sub, $id_rubrique, $importer_statut_publie, $importer_tags, $level+1); 135 } 136 } 126 137 } 127 138 } -
_core_/plugins/sites/action/importer_bookmarks_opml.php
r93092 r93624 11 11 \***************************************************************************/ 12 12 13 if (!defined('_ECRIRE_INC_VERSION')) return; 13 if (!defined('_ECRIRE_INC_VERSION')) { 14 return; 15 } 14 16 15 function action_importer_bookmarks_opml_dist($fichier_ok, $id_parent, $importer_statut_publie, $importer_tags) {17 function action_importer_bookmarks_opml_dist($fichier_ok, $id_parent, $importer_statut_publie, $importer_tags) { 16 18 $nb = 0; 17 if (autoriser('importer', '_sites')){19 if (autoriser('importer', '_sites')) { 18 20 $out = bookmarks_opml_parse($fichier_ok['contenu']); 19 $nb = bookmarks_opml_insert($out, $id_parent,$importer_statut_publie,$importer_tags);21 $nb = bookmarks_opml_insert($out, $id_parent, $importer_statut_publie, $importer_tags); 20 22 } 23 21 24 return $nb; 22 25 } … … 25 28 // http://www.stargeek.com/php_scripts.php?script=20&cat=blog 26 29 function bookmarks_opml_parse(&$contenu) { 27 global $blogs,$folder,$inOpmlfolder, $inOpmlItem; 28 29 $inOpmlfolder = $inOpmlItem = false; 30 31 $xp = xml_parser_create(); 30 global $blogs, $folder, $inOpmlfolder, $inOpmlItem; 32 31 33 xml_set_element_handler($xp, 'opml_startElement', 'opml_endElement'); 34 35 xml_parse($xp, $contenu, true); 36 xml_parser_free($xp); 37 38 return $blogs; 32 $inOpmlfolder = $inOpmlItem = false; 33 34 $xp = xml_parser_create(); 35 36 xml_set_element_handler($xp, 'opml_startElement', 'opml_endElement'); 37 38 xml_parse($xp, $contenu, true); 39 xml_parser_free($xp); 40 41 return $blogs; 39 42 } 40 43 41 44 function opml_startElement($xp, $element, $attr) { 42 global $blogs,$folder,$inOpmlfolder, $inOpmlItem;43 45 global $blogs, $folder, $inOpmlfolder, $inOpmlItem; 46 if (strcasecmp('outline', $element)) { 44 47 return; 45 46 if (!array_key_exists('XMLURL',$attr) && (array_key_exists('TEXT',$attr)||array_key_exists('TITLE',$attr))) {48 } 49 if (!array_key_exists('XMLURL', $attr) && (array_key_exists('TEXT', $attr) || array_key_exists('TITLE', $attr))) { 47 50 //some opml use title instead of text to define a folder (ex: newzcrawler) 48 $folder = $attr['TEXT'] ?$attr['TEXT']:$attr['TITLE'];51 $folder = $attr['TEXT'] ? $attr['TEXT'] : $attr['TITLE']; 49 52 $inOpmlfolder = true; 50 53 $inOpmlItem = false; 51 } else { 52 54 } else { 55 $inOpmlItem = true; 53 56 if ($folder != '') { 54 57 $blogs[$folder][] = $attr; 55 58 } else { 56 59 $blogs[] = $attr; 57 60 } 58 61 } 59 62 } 60 63 61 64 function opml_endElement($xp, $element) { 62 global $blogs,$folder,$inOpmlfolder, $inOpmlItem;63 if (strcasecmp( 65 global $blogs, $folder, $inOpmlfolder, $inOpmlItem; 66 if (strcasecmp($element, "outline") === 0) { 64 67 if (!$inOpmlItem && $inOpmlfolder) { 65 68 // end of folder element! … … 68 71 // end of item element 69 72 $inOpmlItem = false; 70 } 71 } 72 return; 73 } 74 } 75 76 return; 73 77 } 74 78 75 function bookmarks_opml_insert($tree, $id_parent, $importer_statut_publie, $importer_tags) {79 function bookmarks_opml_insert($tree, $id_parent, $importer_statut_publie, $importer_tags) { 76 80 include_spip('action/editer_rubrique'); 77 81 include_spip('action/editer_site'); 78 82 79 83 $nb = 0; 80 81 if (count($tree)) {82 foreach ($tree as $key => $item){84 85 if (count($tree)) { 86 foreach ($tree as $key => $item) { 83 87 // cas d'un flux 84 if (array_key_exists('XMLURL', $item)) {88 if (array_key_exists('XMLURL', $item)) { 85 89 $statut = 'prop'; 86 if ($importer_statut_publie AND autoriser('publierdans', 'rubrique',$id_parent))90 if ($importer_statut_publie AND autoriser('publierdans', 'rubrique', $id_parent)) { 87 91 $statut = 'publie'; 92 } 88 93 $now = time(); 89 if (!$id_syndic = sql_getfetsel('id_syndic', 'spip_syndic', 'id_rubrique='.intval($id_parent)." AND url_site=".sql_quote($item['HTMLURL']))){ 94 if (!$id_syndic = sql_getfetsel('id_syndic', 'spip_syndic', 95 'id_rubrique=' . intval($id_parent) . " AND url_site=" . sql_quote($item['HTMLURL'])) 96 ) { 90 97 $id_syndic = site_inserer($id_parent); 91 98 $set = array( … … 95 102 'syndication' => 'oui', 96 103 'resume' => 'non', 97 'date' => date('Y-m-d H:i:s', $now),104 'date' => date('Y-m-d H:i:s', $now), 98 105 'statut' => $statut 99 106 ); 100 site_modifier($id_syndic,$set); 101 $nb ++; 102 } 103 else { 104 $nb ++; 107 site_modifier($id_syndic, $set); 108 $nb++; 109 } else { 110 $nb++; 105 111 } 106 112 } else { 107 113 // cas d'un dossier 108 114 $titre = $key; 109 $id_rubrique = sql_getfetsel('id_rubrique','spip_rubriques','id_parent='.intval($id_parent)." AND titre=".sql_quote($titre)); 110 if (!$id_rubrique AND $id_rubrique = rubrique_inserer($id_parent)){ 111 rubrique_modifier($id_rubrique,array('titre'=>$titre)); 115 $id_rubrique = sql_getfetsel('id_rubrique', 'spip_rubriques', 116 'id_parent=' . intval($id_parent) . " AND titre=" . sql_quote($titre)); 117 if (!$id_rubrique AND $id_rubrique = rubrique_inserer($id_parent)) { 118 rubrique_modifier($id_rubrique, array('titre' => $titre)); 112 119 } 113 if ($id_rubrique) {114 $nb += bookmarks_opml_insert($item, $id_rubrique,$importer_statut_publie,$importer_tags);120 if ($id_rubrique) { 121 $nb += bookmarks_opml_insert($item, $id_rubrique, $importer_statut_publie, $importer_tags); 115 122 } 116 123 } -
_core_/plugins/sites/action/instituer_syndic_article.php
r88959 r93624 11 11 \***************************************************************************/ 12 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; 13 if (!defined("_ECRIRE_INC_VERSION")) { 14 return; 15 } 14 16 15 17 // http://code.spip.net/@action_instituer_syndic_article_dist … … 22 24 23 25 if ($id_syndic_article = intval($id_syndic_article) 24 AND $id_syndic = sql_getfetsel('id_syndic','spip_syndic_articles',"id_syndic_article=".intval($id_syndic_article)) 25 AND autoriser('moderer','site',$id_syndic)) { 26 sql_updateq("spip_syndic_articles", array("statut" => $statut), "id_syndic_article=".intval($id_syndic_article)); 26 AND $id_syndic = sql_getfetsel('id_syndic', 'spip_syndic_articles', 27 "id_syndic_article=" . intval($id_syndic_article)) 28 AND autoriser('moderer', 'site', $id_syndic) 29 ) { 30 sql_updateq("spip_syndic_articles", array("statut" => $statut), "id_syndic_article=" . intval($id_syndic_article)); 27 31 } 28 32 -
_core_/plugins/sites/action/purger_site.php
r79783 r93624 11 11 \***************************************************************************/ 12 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; 13 if (!defined("_ECRIRE_INC_VERSION")) { 14 return; 15 } 14 16 15 17 function action_purger_site_dist($id_syndic = null) { … … 21 23 22 24 if ($id_syndic = intval($id_syndic) 23 AND autoriser('purger','site',$id_syndic)){ 25 AND autoriser('purger', 'site', $id_syndic) 26 ) { 24 27 25 28 include_spip('base/abstract_sql'); 26 sql_delete('spip_syndic_articles', 'id_syndic='.intval($id_syndic));29 sql_delete('spip_syndic_articles', 'id_syndic=' . intval($id_syndic)); 27 30 } 28 31 } 32 29 33 ?> -
_core_/plugins/sites/action/syndiquer_site.php
r93092 r93624 11 11 \***************************************************************************/ 12 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; 13 if (!defined("_ECRIRE_INC_VERSION")) { 14 return; 15 } 14 16 15 17 // http://code.spip.net/@action_editer_site_dist 16 18 function action_syndiquer_site_dist($id_syndic = null) { 17 19 18 if (is_null($id_syndic)) {20 if (is_null($id_syndic)) { 19 21 $securiser_action = charger_fonction('securiser_action', 'inc'); 20 22 $id_syndic = $securiser_action(); … … 22 24 23 25 24 $id_job = job_queue_add('syndic_a_jour', 'syndic_a_jour',array($id_syndic),'genie/syndic',true);26 $id_job = job_queue_add('syndic_a_jour', 'syndic_a_jour', array($id_syndic), 'genie/syndic', true); 25 27 // l'executer immediatement si possible 26 28 if ($id_job) { 27 29 include_spip('inc/queue'); 28 30 queue_schedule(array($id_job)); 29 } 30 else { 31 spip_log("Erreur insertion syndic_a_jour($id_syndic) dans la file des travaux",_LOG_ERREUR); 31 } else { 32 spip_log("Erreur insertion syndic_a_jour($id_syndic) dans la file des travaux", _LOG_ERREUR); 32 33 } 33 34 -
_core_/plugins/sites/balise/formulaire_site.php
r88959 r93624 11 11 \***************************************************************************/ 12 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; #securite 13 if (!defined("_ECRIRE_INC_VERSION")) { 14 return; 15 } #securite 14 16 15 17 // Le contexte indique dans quelle rubrique le visiteur peut proposer le site … … 17 19 18 20 // http://code.spip.net/@balise_FORMULAIRE_SITE 19 function balise_FORMULAIRE_SITE 20 return calculer_balise_dynamique($p,'FORMULAIRE_SITE', array('id_rubrique'));21 function balise_FORMULAIRE_SITE($p) { 22 return calculer_balise_dynamique($p, 'FORMULAIRE_SITE', array('id_rubrique')); 21 23 } 22 24 … … 26 28 // Pas d'id_rubrique ? Erreur de contexte 27 29 if (!$args[0]) { 28 $msg = array('zbug_champ_hors_motif', 29 array ('champ' => 'FORMULAIRE_SITE', 30 'motif' => 'RUBRIQUES')); 30 $msg = array( 31 'zbug_champ_hors_motif', 32 array( 33 'champ' => 'FORMULAIRE_SITE', 34 'motif' => 'RUBRIQUES' 35 ) 36 ); 31 37 erreur_squelette($msg, $context_compil); 38 32 39 return ''; 33 40 } 41 34 42 // Verifier que les visisteurs sont autorises a proposer un site 35 43 -
_core_/plugins/sites/base/sites.php
r90967 r93624 11 11 \***************************************************************************/ 12 12 13 if (!defined('_ECRIRE_INC_VERSION')) return; 13 if (!defined('_ECRIRE_INC_VERSION')) { 14 return; 15 } 14 16 15 17 /** … … 19 21 * @return array 20 22 */ 21 function sites_declarer_tables_interfaces($interfaces) {23 function sites_declarer_tables_interfaces($interfaces) { 22 24 23 $interfaces['table_des_tables']['sites'] ='syndic'; // compat pour les boucles (SITES)24 $interfaces['table_des_tables']['syndication'] ='syndic';25 $interfaces['table_des_tables']['syndic'] ='syndic';26 $interfaces['table_des_tables']['syndic_articles'] ='syndic_articles';25 $interfaces['table_des_tables']['sites'] = 'syndic'; // compat pour les boucles (SITES) 26 $interfaces['table_des_tables']['syndication'] = 'syndic'; 27 $interfaces['table_des_tables']['syndic'] = 'syndic'; 28 $interfaces['table_des_tables']['syndic_articles'] = 'syndic_articles'; 27 29 28 30 # ne sert plus ? verifier balise_URL_ARTICLE 29 $interfaces['exceptions_des_tables']['syndic_articles']['url_article'] ='url';31 $interfaces['exceptions_des_tables']['syndic_articles']['url_article'] = 'url'; 30 32 # ne sert plus ? verifier balise_LESAUTEURS 31 $interfaces['exceptions_des_tables']['syndic_articles']['lesauteurs'] ='lesauteurs';32 $interfaces['exceptions_des_tables']['syndic_articles']['url_site'] =array('syndic', 'url_site');33 $interfaces['exceptions_des_tables']['syndic_articles']['nom_site'] =array('syndic', 'nom_site');33 $interfaces['exceptions_des_tables']['syndic_articles']['lesauteurs'] = 'lesauteurs'; 34 $interfaces['exceptions_des_tables']['syndic_articles']['url_site'] = array('syndic', 'url_site'); 35 $interfaces['exceptions_des_tables']['syndic_articles']['nom_site'] = array('syndic', 'nom_site'); 34 36 35 37 $interfaces['table_date']['syndication'] = 'date'; 36 38 37 $interfaces['tables_jointures']['spip_syndic_articles'][] = 'syndic';39 $interfaces['tables_jointures']['spip_syndic_articles'][] = 'syndic'; 38 40 39 $interfaces['table_des_traitements']['NOM_SITE'][] =_TRAITEMENT_TYPO;41 $interfaces['table_des_traitements']['NOM_SITE'][] = _TRAITEMENT_TYPO; 40 42 41 43 // Articles syndiques : passage des donnees telles quelles, sans traitement typo 42 44 // la securite et conformite XHTML de ces champs est assuree par safehtml() 43 foreach (array('DESCRIPTIF','SOURCE','URL','URL_SOURCE','LESAUTEURS','TAGS') as $balise)44 if (!isset($interfaces['table_des_traitements'][$balise]['syndic_articles'])) 45 foreach (array('DESCRIPTIF', 'SOURCE', 'URL', 'URL_SOURCE', 'LESAUTEURS', 'TAGS') as $balise) { 46 if (!isset($interfaces['table_des_traitements'][$balise]['syndic_articles'])) { 45 47 $interfaces['table_des_traitements'][$balise]['syndic_articles'] = 'safehtml(%s)'; 46 else 47 if (strpos($interfaces['table_des_traitements'][$balise]['syndic_articles'],'safehtml')==false) 48 $interfaces['table_des_traitements'][$balise]['syndic_articles'] = 'safehtml('.$interfaces['table_des_traitements'][$balise]['syndic_articles'].')'; 48 } else { 49 if (strpos($interfaces['table_des_traitements'][$balise]['syndic_articles'], 'safehtml') == false) { 50 $interfaces['table_des_traitements'][$balise]['syndic_articles'] = 'safehtml(' . $interfaces['table_des_traitements'][$balise]['syndic_articles'] . ')'; 51 } 52 } 53 } 49 54 50 55 return $interfaces; … … 52 57 53 58 54 function sites_declarer_tables_objets_sql($tables) {59 function sites_declarer_tables_objets_sql($tables) { 55 60 $tables['spip_syndic'] = array( 56 'table_objet_surnoms' =>array('site'),57 'type' =>'site',61 'table_objet_surnoms' => array('site'), 62 'type' => 'site', 58 63 'type_surnoms' => array('syndic'), 59 64 'texte_retour' => 'icone_retour', … … 62 67 'texte_modifier' => 'sites:icone_modifier_site', 63 68 'texte_creer' => 'sites:icone_referencer_nouveau_site', 64 'info_aucun_objet' => 'sites:info_aucun_site',69 'info_aucun_objet' => 'sites:info_aucun_site', 65 70 'info_1_objet' => 'sites:info_1_site', 66 71 'info_nb_objets' => 'sites:info_nb_sites', … … 68 73 'date' => 'date', 69 74 'principale' => 'oui', 70 'field' => array(71 "id_syndic" 72 "id_rubrique" 73 "id_secteur" 74 "nom_site" 75 "url_site" 76 "url_syndic" 77 "descriptif" 78 "maj" 79 "syndication" 80 "statut" 81 "date" 82 "date_syndic" 83 "date_index" 84 "moderation" 85 "miroir" 86 "oubli" 87 "resume" 75 'field' => array( 76 "id_syndic" => "bigint(21) NOT NULL", 77 "id_rubrique" => "bigint(21) DEFAULT '0' NOT NULL", 78 "id_secteur" => "bigint(21) DEFAULT '0' NOT NULL", 79 "nom_site" => "text DEFAULT '' NOT NULL", 80 "url_site" => "text DEFAULT '' NOT NULL", 81 "url_syndic" => "text DEFAULT '' NOT NULL", 82 "descriptif" => "text DEFAULT '' NOT NULL", 83 "maj" => "TIMESTAMP", 84 "syndication" => "VARCHAR(3) DEFAULT '' NOT NULL", 85 "statut" => "varchar(10) DEFAULT '0' NOT NULL", 86 "date" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", 87 "date_syndic" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", 88 "date_index" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", 89 "moderation" => "VARCHAR(3) DEFAULT 'non'", 90 "miroir" => "VARCHAR(3) DEFAULT 'non'", 91 "oubli" => "VARCHAR(3) DEFAULT 'non'", 92 "resume" => "VARCHAR(3) DEFAULT 'oui'" 88 93 ), 89 94 'key' => array( 90 "PRIMARY KEY" 91 "KEY id_rubrique" 92 "KEY id_secteur" 93 "KEY statut" 95 "PRIMARY KEY" => "id_syndic", 96 "KEY id_rubrique" => "id_rubrique", 97 "KEY id_secteur" => "id_secteur", 98 "KEY statut" => "statut, date_syndic", 94 99 ), 95 100 'join' => array( 96 "id_syndic" =>"id_syndic",97 "id_rubrique" =>"id_rubrique"101 "id_syndic" => "id_syndic", 102 "id_rubrique" => "id_rubrique" 98 103 ), 99 104 'statut' => array( 100 array('champ'=>'statut','publie'=>'publie','previsu'=>'publie,prop','exception'=>'statut')105 array('champ' => 'statut', 'publie' => 'publie', 'previsu' => 'publie,prop', 'exception' => 'statut') 101 106 ), 102 107 'texte_changer_statut' => 'sites:info_statut_site_1', 103 'statut_textes_instituer' => 108 'statut_textes_instituer' => array( 104 109 'prop' => 'texte_statut_propose_evaluation', 105 110 'publie' => 'texte_statut_publie', … … 108 113 109 114 'rechercher_champs' => array( 110 'nom_site' => 5, 'url_site' => 1, 'descriptif' => 3 115 'nom_site' => 5, 116 'url_site' => 1, 117 'descriptif' => 3 111 118 ), 112 'champs_versionnes' => array('id_rubrique', 'id_secteur', 'nom_site', 'url_site', 'url_syndic', 'descriptif'),119 'champs_versionnes' => array('id_rubrique', 'id_secteur', 'nom_site', 'url_site', 'url_syndic', 'descriptif'), 113 120 ); 114 121 115 122 $tables['spip_syndic_articles'] = array( 116 'table_objet_surnoms' =>array('syndic_article'),123 'table_objet_surnoms' => array('syndic_article'), 117 124 118 125 'texte_retour' => 'icone_retour', … … 120 127 'texte_objet' => 'sites:icone_article_syndic', 121 128 'texte_modifier' => 'icone_modifier_article', # inutile en vrai 122 'info_aucun_objet' => 'sites:info_aucun_article_syndique',129 'info_aucun_objet' => 'sites:info_aucun_article_syndique', 123 130 'info_1_objet' => 'sites:info_1_article_syndique', 124 131 'info_nb_objets' => 'sites:info_nb_articles_syndiques', … … 126 133 127 134 // pas de page propre ni dans ecrire ni dans le site public 128 'url_voir' =>'',129 'url_edit' =>'',130 'page' =>'',131 135 'url_voir' => '', 136 'url_edit' => '', 137 'page' => '', 138 132 139 'date' => 'date', 133 140 'editable' => 'non', 134 141 'principale' => 'oui', 135 'field' => array(136 "id_syndic_article" 137 "id_syndic" 138 "titre" 139 "url" 140 "date" 141 "lesauteurs" 142 "maj" 143 "statut" 144 "descriptif" 145 "lang" 142 'field' => array( 143 "id_syndic_article" => "bigint(21) NOT NULL", 144 "id_syndic" => "bigint(21) DEFAULT '0' NOT NULL", 145 "titre" => "text DEFAULT '' NOT NULL", 146 "url" => "text DEFAULT '' NOT NULL", 147 "date" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", 148 "lesauteurs" => "text DEFAULT '' NOT NULL", 149 "maj" => "TIMESTAMP", 150 "statut" => "varchar(10) DEFAULT '0' NOT NULL", 151 "descriptif" => "text DEFAULT '' NOT NULL", 152 "lang" => "VARCHAR(10) DEFAULT '' NOT NULL", 146 153 "url_source" => "TINYTEXT DEFAULT '' NOT NULL", 147 154 "source" => "TINYTEXT DEFAULT '' NOT NULL", … … 149 156 ), 150 157 'key' => array( 151 "PRIMARY KEY" 152 "KEY id_syndic" 153 "KEY statut" 154 "KEY url" 158 "PRIMARY KEY" => "id_syndic_article", 159 "KEY id_syndic" => "id_syndic", 160 "KEY statut" => "statut", 161 "KEY url" => "url(255)" 155 162 ), 156 163 'join' => array( 157 "id_syndic_article" =>"id_syndic_article",158 "id_syndic" =>"id_syndic"164 "id_syndic_article" => "id_syndic_article", 165 "id_syndic" => "id_syndic" 159 166 ), 160 167 'statut' => array( 161 array('champ'=>'statut','publie'=>'publie','previsu'=>'publie,prop','exception'=>'statut'), 162 array('champ'=>array(array('spip_syndic','id_syndic'),'statut'),'publie'=>'publie','previsu'=>'publie,prop','exception'=>'statut'), 168 array('champ' => 'statut', 'publie' => 'publie', 'previsu' => 'publie,prop', 'exception' => 'statut'), 169 array( 170 'champ' => array(array('spip_syndic', 'id_syndic'), 'statut'), 171 'publie' => 'publie', 172 'previsu' => 'publie,prop', 173 'exception' => 'statut' 174 ), 163 175 ), 164 176 'statut_images' => array( 165 'puce-rouge-anim.gif','publie'=>'puce-publier-8.png','refuse'=>'puce-supprimer-8.png','dispo'=>'puce-proposer-8.png','off'=>'puce-refuser-8.png', 177 'puce-rouge-anim.gif', 178 'publie' => 'puce-publier-8.png', 179 'refuse' => 'puce-supprimer-8.png', 180 'dispo' => 'puce-proposer-8.png', 181 'off' => 'puce-refuser-8.png', 166 182 ), 167 183 'rechercher_champs' => array( 168 'titre' => 5, 'descriptif' => 1 184 'titre' => 5, 185 'descriptif' => 1 169 186 ) 170 187 ); -
_core_/plugins/sites/formulaires/configurer_sites.php
r79783 r93624 15 15 * 16 16 * @package SPIP\Sites\Formulaires 17 **/17 **/ 18 18 19 if (!defined("_ECRIRE_INC_VERSION")) return; 19 if (!defined("_ECRIRE_INC_VERSION")) { 20 return; 21 } 20 22 21 23 /** … … 24 26 * @return array 25 27 * Environnement du formulaire 26 **/27 function formulaires_configurer_sites_charger_dist() {28 foreach (array(29 "activer_sites",30 "activer_syndic",31 "proposer_sites",32 "moderation_sites",33 ) as $m)28 **/ 29 function formulaires_configurer_sites_charger_dist() { 30 foreach (array( 31 "activer_sites", 32 "activer_syndic", 33 "proposer_sites", 34 "moderation_sites", 35 ) as $m) { 34 36 $valeurs[$m] = isset($GLOBALS['meta'][$m]) ? $GLOBALS['meta'][$m] : ''; 37 } 35 38 36 39 return $valeurs; … … 42 45 * @return array 43 46 * Retours du traitement 44 **/ 45 function formulaires_configurer_sites_traiter_dist(){ 46 $res = array('editable'=>true); 47 foreach(array( 48 "activer_sites", 49 "activer_syndic", 50 "moderation_sites", 51 ) as $m) 52 if (!is_null($v=_request($m))) 53 ecrire_meta($m, $v=='oui'?'oui':'non'); 47 **/ 48 function formulaires_configurer_sites_traiter_dist() { 49 $res = array('editable' => true); 50 foreach (array( 51 "activer_sites", 52 "activer_syndic", 53 "moderation_sites", 54 ) as $m) { 55 if (!is_null($v = _request($m))) { 56 ecrire_meta($m, $v == 'oui' ? 'oui' : 'non'); 57 } 58 } 54 59 55 60 $v = _request('proposer_sites'); 56 ecrire_meta('proposer_sites', in_array($v, array('0','1','2'))?$v:'0');61 ecrire_meta('proposer_sites', in_array($v, array('0', '1', '2')) ? $v : '0'); 57 62 58 63 $res['message_ok'] = _T('config_info_enregistree'); 64 59 65 return $res; 60 66 } -
_core_/plugins/sites/formulaires/editer_site.php
r93092 r93624 15 15 * 16 16 * @package SPIP\Sites\Formulaires 17 **/ 18 19 if (!defined("_ECRIRE_INC_VERSION")) return; 17 **/ 18 19 if (!defined("_ECRIRE_INC_VERSION")) { 20 return; 21 } 20 22 21 23 include_spip('inc/actions'); … … 27 29 * 28 30 * @uses formulaires_editer_objet_charger() 29 * 31 * 30 32 * @param int|string $id_syndic 31 33 * Identifiant du site. 'new' pour un nouveau site. … … 44 46 * @return array 45 47 * Environnement du formulaire 46 **/ 47 function formulaires_editer_site_charger_dist($id_syndic = 'new', $id_rubrique = 0, $retour = '', $lier_trad = 0, $config_fonc = 'sites_edit_config', $row = array(), $hidden = ''){ 48 $valeurs = formulaires_editer_objet_charger('site',$id_syndic,$id_rubrique,$lier_trad,$retour,$config_fonc,$row,$hidden); 48 **/ 49 function formulaires_editer_site_charger_dist( 50 $id_syndic = 'new', 51 $id_rubrique = 0, 52 $retour = '', 53 $lier_trad = 0, 54 $config_fonc = 'sites_edit_config', 55 $row = array(), 56 $hidden = '' 57 ) { 58 $valeurs = formulaires_editer_objet_charger('site', $id_syndic, $id_rubrique, $lier_trad, $retour, $config_fonc, $row, 59 $hidden); 49 60 # pour recuperer le logo issu d'analyse auto 50 $valeurs['logo']=''; 51 $valeurs['format_logo']=''; 61 $valeurs['logo'] = ''; 62 $valeurs['format_logo'] = ''; 63 52 64 return $valeurs; 53 65 } … … 56 68 * Identifier le formulaire en faisant abstraction des paramètres qui 57 69 * ne représentent pas l'objet edité 58 * 70 * 59 71 * @param int|string $id_syndic 60 72 * Identifiant du site. 'new' pour un nouveau site. … … 74 86 * Hash du formulaire 75 87 */ 76 function formulaires_editer_site_identifier_dist($id_syndic = 'new', $id_rubrique = 0, $retour = '', $lier_trad = 0, $config_fonc = 'sites_edit_config', $row = array(), $hidden = ''){ 77 return serialize(array(intval($id_syndic),$lier_trad)); 88 function formulaires_editer_site_identifier_dist( 89 $id_syndic = 'new', 90 $id_rubrique = 0, 91 $retour = '', 92 $lier_trad = 0, 93 $config_fonc = 'sites_edit_config', 94 $row = array(), 95 $hidden = '' 96 ) { 97 return serialize(array(intval($id_syndic), $lier_trad)); 78 98 } 79 99 … … 86 106 * Configuration pour le formulaire 87 107 */ 88 function sites_edit_config($row) 89 { 108 function sites_edit_config($row) { 90 109 global $spip_lang; 91 110 … … 95 114 96 115 $config['restreint'] = false; 116 97 117 return $config; 98 118 } … … 102 122 * 103 123 * @uses formulaires_editer_objet_verifier() 104 * 124 * 105 125 * @param int|string $id_syndic 106 126 * Identifiant du site. 'new' pour un nouveau site. … … 120 140 * Erreurs du formulaire 121 141 */ 122 function formulaires_editer_site_verifier_dist($id_syndic = 'new', $id_rubrique = 0, $retour = '', $lier_trad = 0, $config_fonc = 'sites_edit_config', $row = array(), $hidden = ''){ 142 function formulaires_editer_site_verifier_dist( 143 $id_syndic = 'new', 144 $id_rubrique = 0, 145 $retour = '', 146 $lier_trad = 0, 147 $config_fonc = 'sites_edit_config', 148 $row = array(), 149 $hidden = '' 150 ) { 123 151 include_spip('inc/filtres'); 124 152 include_spip('inc/site'); 125 $oblis = array('nom_site', 'url_site','id_parent');153 $oblis = array('nom_site', 'url_site', 'id_parent'); 126 154 // Envoi depuis le formulaire d'analyse automatique d'un site 127 155 if (_request('ajoute_url_auto') AND strlen(vider_url($u = _request('url_auto')))) { … … 129 157 // Si pas de logo, on va le chercher dans le ou les feeds 130 158 if (isset($auto['url_syndic']) 131 132 133 && preg_match(',^select: (.+),', $auto['url_syndic'], $regs))134 {135 $url_syndic = str_replace('select: ', '',$auto['url_syndic']);136 $feeds = explode(' ', $regs[1]);159 && !(isset($auto['logo']) and $auto['logo']) 160 && ($auto['url_syndic'] != _request('ajouter_url_auto')) 161 && preg_match(',^select: (.+),', $auto['url_syndic'], $regs) 162 ) { 163 $url_syndic = str_replace('select: ', '', $auto['url_syndic']); 164 $feeds = explode(' ', $regs[1]); 137 165 foreach ($feeds as $feed) { 138 if (($auto_syndic = analyser_site($feed)) && isset($auto_syndic['format_logo'])) {166 if (($auto_syndic = analyser_site($feed)) && isset($auto_syndic['format_logo'])) { 139 167 $auto['format_logo'] = $auto_syndic['format_logo']; 140 168 $auto['logo'] = $auto_syndic['logo']; … … 143 171 } 144 172 } 145 foreach ($auto as $k=>$v){146 set_request($k, $v);173 foreach ($auto as $k => $v) { 174 set_request($k, $v); 147 175 } 148 176 $erreurs['verif_url_auto'] = _T('sites:texte_referencement_automatique_verifier', array('url' => $u)); 149 177 $erreurs['message_erreur'] = ''; 150 } 151 else{ 178 } else { 152 179 $erreurs['url_auto'] = _T('sites:avis_site_introuvable'); 153 180 } 154 } 155 else{ 181 } else { 156 182 // auto-renseigner le titre si il n'existe pas 157 183 // d'abord a partir du descriptif en coupant 158 titre_automatique('nom_site', array('descriptif'));184 titre_automatique('nom_site', array('descriptif')); 159 185 // et sinon l'url du site, sans couper 160 titre_automatique('nom_site', array('url_site'),255);161 $erreurs = formulaires_editer_objet_verifier('site', $id_syndic,$oblis);186 titre_automatique('nom_site', array('url_site'), 255); 187 $erreurs = formulaires_editer_objet_verifier('site', $id_syndic, $oblis); 162 188 } 189 163 190 return $erreurs; 164 191 } … … 168 195 * 169 196 * @uses formulaires_editer_objet_traiter() 170 * 197 * 171 198 * @param int|string $id_syndic 172 199 * Identifiant du site. 'new' pour un nouveau site. … … 186 213 * Erreurs du formulaire 187 214 */ 188 function formulaires_editer_site_traiter_dist($id_syndic = 'new', $id_rubrique = 0, $retour = '', $lier_trad = 0, $config_fonc = 'sites_edit_config', $row = array(), $hidden = ''){ 215 function formulaires_editer_site_traiter_dist( 216 $id_syndic = 'new', 217 $id_rubrique = 0, 218 $retour = '', 219 $lier_trad = 0, 220 $config_fonc = 'sites_edit_config', 221 $row = array(), 222 $hidden = '' 223 ) { 189 224 // netoyer les entrees 190 if (!is_null(_request('url_site'))) 191 set_request('url_site',vider_url(_request('url_site'))); 192 193 return formulaires_editer_objet_traiter('site',$id_syndic,$id_rubrique,$lier_trad,$retour,$config_fonc,$row,$hidden); 225 if (!is_null(_request('url_site'))) { 226 set_request('url_site', vider_url(_request('url_site'))); 227 } 228 229 return formulaires_editer_objet_traiter('site', $id_syndic, $id_rubrique, $lier_trad, $retour, $config_fonc, $row, 230 $hidden); 194 231 } 195 232 -
_core_/plugins/sites/formulaires/editer_site_fonctions.php
r93092 r93624 11 11 \***************************************************************************/ 12 12 13 if (!defined('_ECRIRE_INC_VERSION')) return; 13 if (!defined('_ECRIRE_INC_VERSION')) { 14 return; 15 } 14 16 15 function saisie_url_syndic($url_syndic, $name = 'url_syndic', $id = 'url_syndic') {17 function saisie_url_syndic($url_syndic, $name = 'url_syndic', $id = 'url_syndic') { 16 18 $res = ""; 17 if (strlen($url_syndic) < 8) $url_syndic = "http://"; 19 if (strlen($url_syndic) < 8) { 20 $url_syndic = "http://"; 21 } 18 22 19 23 // cas d'une liste de flux detectee par feedfinder : menu 20 24 if (preg_match(',^select: (.+),', $url_syndic, $regs)) { 21 $feeds = explode(' ', $regs[1]);25 $feeds = explode(' ', $regs[1]); 22 26 $res .= "<select name='$name' id='$id'>\n"; 23 27 foreach ($feeds as $feed) { 24 $res .= '<option value="' .entites_html($feed).'">'.$feed."</option>\n";28 $res .= '<option value="' . entites_html($feed) . '">' . $feed . "</option>\n"; 25 29 } 26 30 $res .= "</select>\n"; … … 28 32 $res .= "<input type='text' class='text' name='$name' id='$id' value=\"$url_syndic\" size='40' />\n"; 29 33 } 34 30 35 return $res; 31 36 } -
_core_/plugins/sites/formulaires/exporter_sites.php
r79783 r93624 11 11 \***************************************************************************/ 12 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; 13 if (!defined("_ECRIRE_INC_VERSION")) { 14 return; 15 } 14 16 15 function formulaires_exporter_sites_charger_dist() {17 function formulaires_exporter_sites_charger_dist() { 16 18 17 if (!autoriser('exporter', '_sites'))19 if (!autoriser('exporter', '_sites')) { 18 20 return false; 21 } 19 22 20 23 return array( 21 'id_parent' =>0,24 'id_parent' => 0, 22 25 'exporter_publie_seulement' => 0, 23 26 'exporter_avec_mots_cles' => 1, … … 25 28 } 26 29 27 function formulaires_exporter_sites_traiter_dist() {30 function formulaires_exporter_sites_traiter_dist() { 28 31 $id_parent = intval(_request('id_parent')); 29 $exporter_publie_seulement = _request('exporter_publie_seulement') ?1:0;30 $exporter_avec_mots_cles = _request('exporter_avec_mots_cles') ?1:0;32 $exporter_publie_seulement = _request('exporter_publie_seulement') ? 1 : 0; 33 $exporter_avec_mots_cles = _request('exporter_avec_mots_cles') ? 1 : 0; 31 34 32 35 include_spip('inc/actions'); 33 $redirect = generer_action_auteur('exporter_bookmarks',"$id_parent-$exporter_publie_seulement-$exporter_avec_mots_cles"); 34 return array('redirect'=>$redirect); 36 $redirect = generer_action_auteur('exporter_bookmarks', 37 "$id_parent-$exporter_publie_seulement-$exporter_avec_mots_cles"); 38 39 return array('redirect' => $redirect); 35 40 } -
_core_/plugins/sites/formulaires/importer_sites.php
r79783 r93624 11 11 \***************************************************************************/ 12 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; 13 if (!defined("_ECRIRE_INC_VERSION")) { 14 return; 15 } 14 16 15 function formulaires_importer_sites_charger_dist() {17 function formulaires_importer_sites_charger_dist() { 16 18 17 if (!autoriser('importer', '_sites')) 19 if (!autoriser('importer', '_sites')) { 18 20 return false; 21 } 19 22 20 23 return array( … … 26 29 } 27 30 28 function formulaires_importer_sites_verifier_dist() {31 function formulaires_importer_sites_verifier_dist() { 29 32 $erreurs = array(); 30 33 31 if (!_request('id_parent')) 34 if (!_request('id_parent')) { 32 35 $erreurs['id_parent'] = _T('info_obligatoire'); 36 } 33 37 34 38 $fichier_ok = info_fichiers_import('fichier_import'); 35 if (!$fichier_ok) {39 if (!$fichier_ok) { 36 40 $erreurs['fichier_import'] = _T('sites:erreur_fichier_incorrect'); 37 } 38 elseif (!charger_fonction('importer_bookmarks_'.$fichier_ok['format'],'action',true)){39 $erreurs['fichier_import'] = _T('sites:erreur_fichier_format_inconnu',array('fichier'=>"<tt>".$fichier_ok['name']."</tt>"));41 } elseif (!charger_fonction('importer_bookmarks_' . $fichier_ok['format'], 'action', true)) { 42 $erreurs['fichier_import'] = _T('sites:erreur_fichier_format_inconnu', 43 array('fichier' => "<tt>" . $fichier_ok['name'] . "</tt>")); 40 44 } 41 45 … … 43 47 } 44 48 45 function formulaires_importer_sites_traiter_dist() {49 function formulaires_importer_sites_traiter_dist() { 46 50 $id_parent = intval(_request('id_parent')); 47 51 $importer_statut_publie = _request('importer_statut_publie') ? true : false; … … 49 53 $fichier_ok = info_fichiers_import('fichier_import'); 50 54 51 $importer_bookmarks = charger_fonction('importer_bookmarks_' .$fichier_ok['format'],'action');52 $nb = $importer_bookmarks($fichier_ok, $id_parent,$importer_statut_publie,$importer_tags);55 $importer_bookmarks = charger_fonction('importer_bookmarks_' . $fichier_ok['format'], 'action'); 56 $nb = $importer_bookmarks($fichier_ok, $id_parent, $importer_statut_publie, $importer_tags); 53 57 54 if (!$nb) 55 $res = array('message_erreur'=>_T('sites:info_aucun_site_importe')); 56 else 57 $res = array('message_ok'=>singulier_ou_pluriel($nb,'sites:info_1_site_importe','sites:info_nb_sites_importes')); 58 if (!$nb) { 59 $res = array('message_erreur' => _T('sites:info_aucun_site_importe')); 60 } else { 61 $res = array( 62 'message_ok' => singulier_ou_pluriel($nb, 'sites:info_1_site_importe', 'sites:info_nb_sites_importes') 63 ); 64 } 58 65 59 66 return $res; 60 67 } 61 68 62 function info_fichiers_import($name) {69 function info_fichiers_import($name) { 63 70 static $fichier_ok = array(); 64 71 65 if (!isset($fichier_ok[$name])){ 66 if (sizeof($_FILES)<0 67 OR !isset($_FILES[$name]) 68 OR !$_FILES[$name]['size']>0) 72 if (!isset($fichier_ok[$name])) { 73 if (sizeof($_FILES) < 0 74 OR !isset($_FILES[$name]) 75 OR !$_FILES[$name]['size'] > 0 76 ) { 69 77 return false; 78 } 70 79 71 if ($_FILES[$name]['error'] !=0)80 if ($_FILES[$name]['error'] != 0) { 72 81 return false; 82 } 73 83 74 84 $fichier_ok[$name] = array(); … … 76 86 $fichier_ok[$name]['chemin'] = $_FILES[$name]['tmp_name']; 77 87 78 // On r écupère le contenu du fichier88 // On r�cup�re le contenu du fichier 79 89 $fichier_ok[$name]['format'] = ''; 80 lire_fichier($fichier_ok[$name]['chemin'], $fichier_ok[$name]['contenu']);81 if (stripos($fichier_ok[$name]['contenu'], 'NETSCAPE-Bookmark-file') !==false)90 lire_fichier($fichier_ok[$name]['chemin'], $fichier_ok[$name]['contenu']); 91 if (stripos($fichier_ok[$name]['contenu'], 'NETSCAPE-Bookmark-file') !== false) { 82 92 $fichier_ok[$name]['format'] = 'netscape'; 83 if ($_FILES[$name]['type'] == 'text/xml' AND stripos($fichier_ok[$name]['contenu'], 'opml')!==false) 93 } 94 if ($_FILES[$name]['type'] == 'text/xml' AND stripos($fichier_ok[$name]['contenu'], 'opml') !== false) { 84 95 $fichier_ok[$name]['format'] = 'opml'; 96 } 85 97 } 86 98 -
_core_/plugins/sites/formulaires/regler_moderation_site.php
r93092 r93624 15 15 * 16 16 * @package SPIP\Sites\Formulaires 17 **/17 **/ 18 18 19 if (!defined("_ECRIRE_INC_VERSION")) return; 19 if (!defined("_ECRIRE_INC_VERSION")) { 20 return; 21 } 20 22 21 23 include_spip('inc/actions'); … … 27 29 * 28 30 * @uses formulaires_editer_objet_charger() 29 * 31 * 30 32 * @param int $id_syndic 31 * Identifiant du site. 33 * Identifiant du site. 32 34 * @param string $retour 33 35 * URL de redirection après le traitement 34 36 * @return array 35 37 * Environnement du formulaire 36 **/37 function formulaires_regler_moderation_site_charger_dist($id_syndic, $retour = '') {38 $valeurs = formulaires_editer_objet_charger('site', $id_syndic,0,0,$retour,'');38 **/ 39 function formulaires_regler_moderation_site_charger_dist($id_syndic, $retour = '') { 40 $valeurs = formulaires_editer_objet_charger('site', $id_syndic, 0, 0, $retour, ''); 39 41 # pour recuperer le logo issu d'analyse auto 40 foreach (array('moderation','miroir','oubli','resume') as $k)41 if (!$valeurs[$k]) 42 foreach (array('moderation', 'miroir', 'oubli', 'resume') as $k) { 43 if (!$valeurs[$k]) { 42 44 $valeurs[$k] = 'non'; 45 } 46 } 43 47 44 48 return $valeurs; … … 56 60 * Hash du formulaire 57 61 */ 58 function formulaires_regler_moderation_site_identifier_dist($id_syndic, $retour = '') {62 function formulaires_regler_moderation_site_identifier_dist($id_syndic, $retour = '') { 59 63 return serialize(array($id_syndic)); 60 64 } … … 64 68 * 65 69 * @param int $id_syndic 66 * Identifiant du site. 70 * Identifiant du site. 67 71 * @param string $retour 68 72 * URL de redirection après le traitement 69 73 * @return array 70 74 * Erreurs du formulaire 71 **/72 function formulaires_regler_moderation_site_verifier_dist($id_syndic, $retour = '') {75 **/ 76 function formulaires_regler_moderation_site_verifier_dist($id_syndic, $retour = '') { 73 77 $erreurs = array(); 74 75 foreach(array('moderation','miroir','oubli','resume') as $k){ 76 if (!_request($k) OR !in_array(_request($k),array('oui','non'))) 77 set_request($k,'non'); 78 79 foreach (array('moderation', 'miroir', 'oubli', 'resume') as $k) { 80 if (!_request($k) OR !in_array(_request($k), array('oui', 'non'))) { 81 set_request($k, 'non'); 82 } 78 83 } 79 84 … … 85 90 * 86 91 * @uses formulaires_editer_objet_traiter() 87 * 92 * 88 93 * @param int $id_syndic 89 * Identifiant du site. 94 * Identifiant du site. 90 95 * @param string $retour 91 96 * URL de redirection après le traitement 92 97 * @return array 93 98 * Retours des traitements 94 **/ 95 function formulaires_regler_moderation_site_traiter_dist($id_syndic, $retour = ''){ 96 $res = formulaires_editer_objet_traiter('site',$id_syndic,0,0,$retour,''); 97 $res['editable'] = true; 98 if (!isset($res['message_erreur'])) 99 $res['message_ok'] = _T('config_info_enregistree'); 100 return $res; 99 **/ 100 function formulaires_regler_moderation_site_traiter_dist($id_syndic, $retour = '') { 101 $res = formulaires_editer_objet_traiter('site', $id_syndic, 0, 0, $retour, ''); 102 $res['editable'] = true; 103 if (!isset($res['message_erreur'])) { 104 $res['message_ok'] = _T('config_info_enregistree'); 105 } 106 107 return $res; 101 108 } 102 109 -
_core_/plugins/sites/formulaires/site.php
r79783 r93624 11 11 \***************************************************************************/ 12 12 13 if (!defined('_ECRIRE_INC_VERSION')) return; 13 if (!defined('_ECRIRE_INC_VERSION')) { 14 return; 15 } 14 16 15 17 function formulaires_site_charger_dist($id_rubrique) { 16 18 17 return array('nom_site' =>'','url_site'=>'http://','description_site'=>'');19 return array('nom_site' => '', 'url_site' => 'http://', 'description_site' => ''); 18 20 } 19 21 20 function formulaires_site_verifier_dist($id_rubrique) {22 function formulaires_site_verifier_dist($id_rubrique) { 21 23 22 24 $erreurs = array(); 23 if (!$nom = _request('nom_site')) 25 if (!$nom = _request('nom_site')) { 24 26 $erreurs['nom_site'] = _T("info_obligatoire"); 25 else {26 if ((strlen ($nom) < 2) OR (strlen(_request('nobot'))>0))27 } else { 28 if ((strlen($nom) < 2) OR (strlen(_request('nobot')) > 0)) { 27 29 $erreurs['email_message_auteur'] = _T('form_prop_indiquer_nom_site'); 30 } 28 31 } 29 if (!$url = _request('url_site')) 32 if (!$url = _request('url_site')) { 30 33 $erreurs['url_site'] = _T("info_obligatoire"); 34 } 31 35 32 36 if (!count($erreurs)) { 33 37 // Tester l'URL du site 34 38 include_spip('inc/distant'); 35 if (!recuperer_page($url)) 39 if (!recuperer_page($url)) { 36 40 $erreurs['url_site'] = _T('form_pet_url_invalide'); 41 } 37 42 } 43 38 44 return $erreurs; 39 45 } 40 46 41 function formulaires_site_traiter_dist($id_rubrique) {42 $res = array('message_erreur' =>_T('titre_probleme_technique'));47 function formulaires_site_traiter_dist($id_rubrique) { 48 $res = array('message_erreur' => _T('titre_probleme_technique')); 43 49 44 50 $nom = _request('nom_site'); … … 51 57 'url_site' => $url, 52 58 'id_rubrique' => $id_rubrique, 53 'id_secteur' => sql_getfetsel('id_secteur', 'spip_rubriques','id_rubrique='.sql_quote($id_rubrique)),59 'id_secteur' => sql_getfetsel('id_secteur', 'spip_rubriques', 'id_rubrique=' . sql_quote($id_rubrique)), 54 60 'descriptif' => $desc, 55 61 'date' => date('Y-m-d H:i:s'), 56 62 'date_syndic' => date('Y-m-d H:i:s'), 57 63 'statut' => 'prop', 58 'syndication' => 'non'))) 59 $res = array('message_ok' => _T('form_prop_enregistre'), 'id_syndic'=>$id_syndic); 64 'syndication' => 'non' 65 )) 66 ) { 67 $res = array('message_ok' => _T('form_prop_enregistre'), 'id_syndic' => $id_syndic); 68 } 60 69 61 70 return $res; -
_core_/plugins/sites/genie/syndic.php
r92822 r93624 15 15 * 16 16 * @package SPIP\Sites\Genie 17 **/ 18 19 if (!defined("_ECRIRE_INC_VERSION")) return; 17 **/ 18 19 if (!defined("_ECRIRE_INC_VERSION")) { 20 return; 21 } 20 22 include_spip('inc/syndic'); 21 23 … … 42 44 * @param int $t Date de dernier passage 43 45 * @return int 44 **/46 **/ 45 47 function genie_syndic_dist($t) { 46 48 return executer_une_syndication(); … … 55 57 * @return 56 58 * retourne 0 si aucun a faire ou echec lors de la tentative 57 **/59 **/ 58 60 function executer_une_syndication() { 59 61 60 62 // On va tenter un site 'sus' ou 'off' de plus de 24h, et le passer en 'off' 61 63 // s'il echoue 62 $where = sql_in("syndication", array('sus', 'off')) . "64 $where = sql_in("syndication", array('sus', 'off')) . " 63 65 AND statut<>'refuse' 64 AND NOT(" . sql_date_proche('date_syndic', (0 - _PERIODE_SYNDICATION_SUSPENDUE) , "MINUTE") . ')'; 65 $id_syndic = sql_getfetsel("id_syndic", "spip_syndic", "statut<>".sql_quote("refuse")." AND ".$where, '', "date_syndic", "1"); 66 AND NOT(" . sql_date_proche('date_syndic', (0-_PERIODE_SYNDICATION_SUSPENDUE), "MINUTE") . ')'; 67 $id_syndic = sql_getfetsel("id_syndic", "spip_syndic", "statut<>" . sql_quote("refuse") . " AND " . $where, '', 68 "date_syndic", "1"); 66 69 if ($id_syndic) { 67 70 // inserer la tache dans la file, avec controle d'unicite 68 job_queue_add('syndic_a_jour', 'syndic_a_jour',array($id_syndic),'genie/syndic',true);71 job_queue_add('syndic_a_jour', 'syndic_a_jour', array($id_syndic), 'genie/syndic', true); 69 72 } 70 73 … … 72 75 $where = "syndication='oui' 73 76 AND statut<>'refuse' 74 AND NOT(" . sql_date_proche('date_syndic', (0 - _PERIODE_SYNDICATION) , "MINUTE") . ')'; 75 $id_syndic = sql_getfetsel("id_syndic", "spip_syndic", "statut<>".sql_quote("refuse")." AND ".$where, '', "date_syndic", "1"); 77 AND NOT(" . sql_date_proche('date_syndic', (0-_PERIODE_SYNDICATION), "MINUTE") . ')'; 78 $id_syndic = sql_getfetsel("id_syndic", "spip_syndic", "statut<>" . sql_quote("refuse") . " AND " . $where, '', 79 "date_syndic", "1"); 76 80 77 81 if ($id_syndic) { 78 82 // inserer la tache dans la file, avec controle d'unicite 79 job_queue_add('syndic_a_jour', 'syndic_a_jour',array($id_syndic),'genie/syndic',true);83 job_queue_add('syndic_a_jour', 'syndic_a_jour', array($id_syndic), 'genie/syndic', true); 80 84 } 81 85 … … 86 90 /** 87 91 * Mettre à jour le site 88 * 92 * 89 93 * Attention, cette fonction ne doit pas etre appellee simultanement 90 94 * sur un meme site: un verrouillage a du etre pose en amont. … … 98 102 include_spip('inc/texte'); 99 103 $call = debug_backtrace(); 100 if ($call[1]['function']!=='queue_start_job') 101 spip_log("syndic_a_jour doit etre appelee par JobQueue Cf. http://trac.rezo.net/trac/spip/changeset/10294",_LOG_ERREUR); 102 103 $row = sql_fetsel("*", "spip_syndic", "id_syndic=".intval($now_id_syndic)); 104 105 if (!$row) return; 104 if ($call[1]['function'] !== 'queue_start_job') { 105 spip_log("syndic_a_jour doit etre appelee par JobQueue Cf. http://trac.rezo.net/trac/spip/changeset/10294", 106 _LOG_ERREUR); 107 } 108 109 $row = sql_fetsel("*", "spip_syndic", "id_syndic=" . intval($now_id_syndic)); 110 111 if (!$row) { 112 return; 113 } 106 114 107 115 $url_syndic = $row['url_syndic']; 108 116 $url_site = $row['url_site']; 109 117 110 if ($row['moderation'] == 'oui') 111 $moderation = 'dispo'; // a valider 112 else 113 $moderation = 'publie'; // en ligne sans validation 118 if ($row['moderation'] == 'oui') { 119 $moderation = 'dispo'; 120 } // a valider 121 else { 122 $moderation = 'publie'; 123 } // en ligne sans validation 114 124 115 125 // determiner le statut a poser en cas d'echec : sus par defaut … … 117 127 $statut = 'sus'; 118 128 if ( 119 $row['statut'] =='off'120 OR ($row['statut']=='sus' AND time()-strtotime($row['date_syndic'])>_PERIODE_SYNDICATION_SUSPENDUE*60)121 )129 $row['statut'] == 'off' 130 OR ($row['statut'] == 'sus' AND time()-strtotime($row['date_syndic']) > _PERIODE_SYNDICATION_SUSPENDUE*60) 131 ) { 122 132 $statut = 'off'; 123 124 sql_updateq('spip_syndic', array('syndication'=>$statut, 'date_syndic'=>date('Y-m-d H:i:s')), "id_syndic=".intval($now_id_syndic)); 133 } 134 135 sql_updateq('spip_syndic', array('syndication' => $statut, 'date_syndic' => date('Y-m-d H:i:s')), 136 "id_syndic=" . intval($now_id_syndic)); 125 137 126 138 // Aller chercher les donnees du RSS et les analyser 127 139 include_spip('inc/distant'); 128 140 $rss = recuperer_page($url_syndic, true); 129 if (!$rss) 141 if (!$rss) { 130 142 $articles = _T('sites:avis_echec_syndication_02'); 131 else143 } else { 132 144 $articles = analyser_backend($rss, $url_syndic); 145 } 133 146 134 147 // Renvoyer l'erreur le cas echeant 135 if (!is_array($articles)) return $articles; 148 if (!is_array($articles)) { 149 return $articles; 150 } 136 151 137 152 // Les enregistrer dans la base … … 146 161 $faits = sql_in("id_syndic_article", $faits, 'NOT'); 147 162 if ($row['miroir'] == 'oui') { 148 sql_update('spip_syndic_articles', array('statut'=>"'off'", 'maj'=>'maj'), "id_syndic=$now_id_syndic AND $faits"); 149 } 150 // suppression apres 2 mois des liens qui sont sortis du feed 163 sql_update('spip_syndic_articles', array('statut' => "'off'", 'maj' => 'maj'), 164 "id_syndic=$now_id_syndic AND $faits"); 165 } 166 // suppression apres 2 mois des liens qui sont sortis du feed 151 167 if ($row['oubli'] == 'oui') { 152 168 153 sql_delete('spip_syndic_articles', "id_syndic=$now_id_syndic AND NOT(" . sql_date_proche('maj', -2, 'MONTH') . ') AND NOT(' . sql_date_proche('date', -2, 'MONTH') . ") AND $faits"); 169 sql_delete('spip_syndic_articles', "id_syndic=$now_id_syndic AND NOT(" . sql_date_proche('maj', -2, 170 'MONTH') . ') AND NOT(' . sql_date_proche('date', -2, 'MONTH') . ") AND $faits"); 154 171 } 155 172 } 156 173 157 174 // Noter que la syndication est OK 158 sql_updateq("spip_syndic", array("syndication" => 'oui'), "id_syndic=" .intval($now_id_syndic));175 sql_updateq("spip_syndic", array("syndication" => 'oui'), "id_syndic=" . intval($now_id_syndic)); 159 176 160 177 return false; # c'est bon … … 171 188 * @pipeline_appel post_insertion 172 189 * @pipeline_appel post_syndication 173 * 190 * 174 191 * @param array $data 175 192 * @param int $now_id_syndic … … 181 198 * @return bool 182 199 * true si l'article est nouveau, false sinon. 183 **/200 **/ 184 201 function inserer_article_syndique($data, $now_id_syndic, $statut, $url_site, $url_syndic, $resume, &$faits) { 185 202 // Creer le lien s'il est nouveau - cle=(id_syndic,url) … … 188 205 /** 189 206 * URL unique de syndication 190 * 207 * 191 208 * Si true, un lien déjà syndiqué arrivant par une autre source est ignoré 192 209 * par defaut `false`, chaque source a sa liste de liens, éventuellement les mêmes 193 * @var bool */ 210 * 211 * @var bool 212 */ 194 213 if (!defined('_SYNDICATION_URL_UNIQUE')) { 195 214 define('_SYNDICATION_URL_UNIQUE', false); … … 204 223 * Attention si on modifie à la main un article syndiqué, les modifs sont 205 224 * écrasées lors de la syndication suivante 206 * 225 * 207 226 * @var bool 208 **/227 **/ 209 228 if (!defined('_SYNDICATION_CORRECTION')) { 210 229 define('_SYNDICATION_CORRECTION', true); … … 223 242 ? '' 224 243 : " AND id_syndic=$now_id_syndic") 225 . " AND " . sql_in('id_syndic_article', $faits, 'NOT'), "", "maj DESC");244 . " AND " . sql_in('id_syndic_article', $faits, 'NOT'), "", "maj DESC"); 226 245 while ($a = sql_fetch($s)) { 227 $id = 246 $id = $a['id_syndic_article']; 228 247 $id_syndic = $a['id_syndic']; 229 248 if ($a['titre'] == $data['titre']) { … … 236 255 if ($n == 1) { 237 256 $id_syndic_article = $id; 238 } 239 // Si l'article n'existe pas, on le cree 257 } // Si l'article n'existe pas, on le cree 240 258 elseif (!isset($id_syndic_article)) { 241 259 $champs = array( … … 243 261 'url' => $le_lien, 244 262 'date' => date("Y-m-d H:i:s", $data['date'] ? $data['date'] : $data['lastbuilddate']), 245 'statut' 263 'statut' => $statut 246 264 ); 247 265 // Envoyer aux plugins … … 279 297 } 280 298 // 2. Le lien existait deja, lie a un autre spip_syndic 281 if (_SYNDICATION_URL_UNIQUE AND $id_syndic != $now_id_syndic) 299 if (_SYNDICATION_URL_UNIQUE AND $id_syndic != $now_id_syndic) { 282 300 return; 301 } 283 302 } 284 303 … … 301 320 302 321 // tags & enclosures (preparer spip_syndic_articles.tags) 303 $tags = ($data['enclosures'] ?$data['enclosures']:'');322 $tags = ($data['enclosures'] ? $data['enclosures'] : ''); 304 323 # eviter les doublons (cle = url+titre) et passer d'un tableau a une chaine 305 324 if ($data['tags']) { 306 325 $vus = array(); 307 326 foreach ($data['tags'] as $tag) { 308 $cle = supprimer_tags($tag) .extraire_attribut($tag,'href');327 $cle = supprimer_tags($tag) . extraire_attribut($tag, 'href'); 309 328 $vus[$cle] = $tag; 310 329 } … … 314 333 // Mise a jour du contenu (titre,auteurs,description,date?,source...) 315 334 $vals = array( 316 'titre' => $data['titre'], 317 'lesauteurs' => $data['lesauteurs'], 318 'descriptif' => $desc, 319 'lang'=> substr($data['lang'],0,10), 320 'source' => (isset($data['source']) ? substr($data['source'],0,255) : ''), 321 'url_source' => (isset($data['url_source']) ? substr($data['url_source'],0,255) : ''), 322 'tags' => $tags); 335 'titre' => $data['titre'], 336 'lesauteurs' => $data['lesauteurs'], 337 'descriptif' => $desc, 338 'lang' => substr($data['lang'], 0, 10), 339 'source' => (isset($data['source']) ? substr($data['source'], 0, 255) : ''), 340 'url_source' => (isset($data['url_source']) ? substr($data['url_source'], 0, 255) : ''), 341 'tags' => $tags 342 ); 323 343 324 344 // Mettre a jour la date si lastbuilddate 325 if (isset($data['lastbuilddate']) and $data['lastbuilddate']) 326 $vals['date']= date("Y-m-d H:i:s", $data['lastbuilddate']); 327 345 if (isset($data['lastbuilddate']) and $data['lastbuilddate']) { 346 $vals['date'] = date("Y-m-d H:i:s", $data['lastbuilddate']); 347 } 348 328 349 sql_updateq('spip_syndic_articles', $vals, "id_syndic_article=$id_syndic_article"); 329 350 … … 348 369 * Nettoyer les contenus de flux qui utilisent des espaces insécables en début 349 370 * pour faire un retrait. 350 * 371 * 351 372 * Peut être sous la forme de l'entité ` ` ou en utf8 `\xc2\xa0` 352 373 * … … 354 375 * @return string 355 376 */ 356 function trim_more($texte) {377 function trim_more($texte) { 357 378 $texte = trim($texte); 358 379 // chr(194)chr(160) 359 $texte = preg_replace(",^(\s|( )|(\xc2\xa0))+,ums","",$texte); 360 return $texte; 361 } 380 $texte = preg_replace(",^(\s|( )|(\xc2\xa0))+,ums", "", $texte); 381 382 return $texte; 383 } 384 362 385 ?> -
_core_/plugins/sites/inc/feedfinder.php
r93092 r93624 16 16 * 17 17 * j'integre pas l'interrogation avec xml_rpc de syndic8, mais on peut le faire assez facilement 18 * dans la phase de test sur differentes url je n'ai constate aucune diffrerence entre les reponses 18 * dans la phase de test sur differentes url je n'ai constate aucune diffrerence entre les reponses 19 19 * donnees par feedfinder.py et les miennes donc je ne suis pas sur de voir l'interet 20 20 * … … 22 22 * 23 23 * exemple d'utilisation 24 * 24 * 25 25 * print_r (get_feed_from_url("http://willy.boerland.com/myblog/")); 26 * 26 * 27 27 * on obtient 28 * 28 * 29 29 * Array 30 30 * ( … … 35 35 * ) 36 36 */ 37 if (!defined('_ECRIRE_INC_VERSION')) return; 37 if (!defined('_ECRIRE_INC_VERSION')) { 38 return; 39 } 38 40 39 41 $verif_complete = 0; //mettez le a 1 si vous voulez controler la validite des feed trouves mais le temps d'execution 40 42 //est alors plus long 41 43 42 44 /** 43 * une fonction qui permet de si un lien est un feed ou nom, 44 * si c'est un feed elle retourne son type, si c'est pas un feed elle retourne 0, 45 * une fonction qui permet de si un lien est un feed ou nom, 46 * si c'est un feed elle retourne son type, si c'est pas un feed elle retourne 0, 45 47 * cette verification est évidemment très très légère 46 * 48 * 47 49 * @param string $url 48 * 49 * @return string|0 50 * 50 * URL à analyser 51 * @return string|0 52 * Retourne son type (rss|atom|rdf) ou 0 si pas feed 51 53 */ 52 function is_feed($url) {54 function is_feed($url) { 53 55 54 56 /** … … 57 59 if (function_exists('recuperer_page')) { 58 60 $buffer = recuperer_page($url); 59 if (preg_match("/<(\w*) .*/", $buffer, $matches)) {61 if (preg_match("/<(\w*) .*/", $buffer, $matches)) { 60 62 //ici on detecte la premiere balise 61 63 $type_feed = $matches[1]; 62 64 switch ($type_feed) { 63 case "rss": return "rss"; 64 case "feed": return "atom"; 65 case "rdf": return "rdf"; 66 } 67 } 65 case "rss": 66 return "rss"; 67 case "feed": 68 return "atom"; 69 case "rdf": 70 return "rdf"; 71 } 72 } 73 68 74 return ''; 69 75 } 70 76 71 77 $fp = @fopen($url, "r"); 72 if (!$fp )78 if (!$fp) { 73 79 return 0; 80 } 74 81 //verifion la nature de ce fichier 75 82 while (!feof($fp)) { 76 83 $buffer = fgets($fp, 4096); 77 if (preg_match("/<(\w*) .*/", $buffer, $matches)) {84 if (preg_match("/<(\w*) .*/", $buffer, $matches)) { 78 85 //ici on detecte la premiere balise 79 86 $type_feed = $matches[1]; 80 87 switch ($type_feed) { 81 case "rss": fclose($fp); return "rss"; 82 case "feed": fclose($fp); return "atom"; 83 case "rdf": fclose($fp); return "rdf"; 84 default : fclose($fp); return 0; 88 case "rss": 89 fclose($fp); 90 91 return "rss"; 92 case "feed": 93 fclose($fp); 94 95 return "atom"; 96 case "rdf": 97 fclose($fp); 98 99 return "rdf"; 100 default : 101 fclose($fp); 102 103 return 0; 85 104 } 86 105 } … … 89 108 90 109 /*****************test is_feed****************************** 91 echo is_feed("http://contrib.spip.net/spip.php?page=backend" _EXTENSIO_PHP") . "<br />"; //retourne rss92 echo is_feed("http://liberation.fr/rss.php") . "<br />"; //retourne rss93 echo is_feed("http://liberation.fr/rss.php") . "<br />"; //retourne rss94 echo is_feed("http://willy.boerland.com/myblog/atom/feed") //retourne atom95 echo is_feed("http://spip.net/") . "<br />"; //retoune 096 ************************************************************/110 * echo is_feed("http://contrib.spip.net/spip.php?page=backend" _EXTENSIO_PHP") . "<br />"; //retourne rss 111 * echo is_feed("http://liberation.fr/rss.php") . "<br />"; //retourne rss 112 * echo is_feed("http://liberation.fr/rss.php") . "<br />"; //retourne rss 113 * echo is_feed("http://willy.boerland.com/myblog/atom/feed") //retourne atom 114 * echo is_feed("http://spip.net/") . "<br />"; //retoune 0 115 ************************************************************/ 97 116 98 117 /** … … 102 121 * alors on recupere la valeur href='<url>', on adapte celle-ci si elle 103 122 * est relative et on verifie que c'est bien un feed si oui on l'ajoute 104 * au tableau des feed si on ne trouve rien ou si aucun feed est trouve on retourne 123 * au tableau des feed si on ne trouve rien ou si aucun feed est trouve on retourne 105 124 * un tableau vide 106 * 125 * 107 126 * @param string $url 108 * 127 * L'URL à analyser 109 128 * @param $buffer 110 129 * @return array $feed_list 111 * 130 * Le tableau des feed trouvés dans la page 112 131 */ 113 function get_feed_from_url($url, $buffer = false) {132 function get_feed_from_url($url, $buffer = false) { 114 133 global $verif_complete; 115 134 //j'ai prevenu ce sera pas fin 116 if (!preg_match("/^http:\/\/.*/", $url)) $url = "http://" . $url; 117 if (!$buffer) $buffer = @file_get_contents($url); 135 if (!preg_match("/^http:\/\/.*/", $url)) { 136 $url = "http://" . $url; 137 } 138 if (!$buffer) { 139 $buffer = @file_get_contents($url); 140 } 118 141 119 142 include_spip("inc/filtres"); … … 121 144 $feed_list = array(); 122 145 //extraction des <link> 123 if ($links = extraire_balises($buffer, "link")){146 if ($links = extraire_balises($buffer, "link")) { 124 147 //y a t-y rss atom rdf ou xml dans ces balises 125 foreach ($links as $link){148 foreach ($links as $link) { 126 149 if ( 127 128 129 130 150 (strpos($link, "rss") 151 || strpos($link, "rdf") 152 || strpos($link, "atom") 153 || strpos($link, "xml")) 131 154 && 132 (!strpos($link,'opensearch') && !strpos($link,'oembed'))133 ){155 (!strpos($link, 'opensearch') && !strpos($link, 'oembed')) 156 ) { 134 157 //voila un candidat on va extraire sa partie href et la placer dans notre tableau 135 if ($href = extraire_attribut($link, "href")){136 158 if ($href = extraire_attribut($link, "href")) { 159 //on aura pris soin de verifier si ce lien est relatif d'en faire un absolu 137 160 $href = suivre_lien($url, $href); 138 if (!$verif_complete OR is_feed($href)){161 if (!$verif_complete OR is_feed($href)) { 139 162 $feed_list[] = $href; 140 163 } 141 164 } 142 165 } … … 144 167 } 145 168 //extraction des <a> 146 if ($links = extraire_balises($buffer, "a")){169 if ($links = extraire_balises($buffer, "a")) { 147 170 //y a t-y rss atom rdf ou xml dans ces balises 148 foreach ($links as $link){171 foreach ($links as $link) { 149 172 if ( 150 151 152 153 173 (strpos($link, "rss") 174 || strpos($link, "rdf") 175 || strpos($link, "atom") 176 || strpos($link, "xml")) 154 177 && 155 (!strpos($link,'opensearch') && !strpos($link,'oembed'))156 ){178 (!strpos($link, 'opensearch') && !strpos($link, 'oembed')) 179 ) { 157 180 //voila un candidat on va extraire sa partie href et la placer dans notre tableau 158 if ($href = extraire_attribut($link, "href")){159 181 if ($href = extraire_attribut($link, "href")) { 182 //on aura pris soin de verifier si ce lien est relatif d'en faire un absolu 160 183 $href = suivre_lien($url, $href); 161 if (!$verif_complete OR is_feed($href)){184 if (!$verif_complete OR is_feed($href)) { 162 185 $feed_list[] = $href; 163 186 } 164 187 } 165 188 } … … 169 192 // si c'est un site SPIP, tentons l'url connue 170 193 if (!count($feed_list) 171 AND ( 172 strpos($url,"spip") OR stripos($buffer,"spip") 173 )){ 174 $href = suivre_lien($url,"spip.php?page=backend"); 175 if (is_feed($href)) 194 AND ( 195 strpos($url, "spip") OR stripos($buffer, "spip") 196 ) 197 ) { 198 $href = suivre_lien($url, "spip.php?page=backend"); 199 if (is_feed($href)) { 176 200 $feed_list[] = $href; 177 } 201 } 202 } 203 178 204 return $feed_list; 179 205 } 206 180 207 /************************************ getFeed **************************** 181 print_r (get_feed_from_url("contrib.spip.net"));182 print_r (get_feed_from_url("http://liberation.fr/"));183 print_r (get_feed_from_url("cnn.com"));184 print_r (get_feed_from_url("http://willy.boerland.com/myblog/"));185 ***************************** Resultat *****************************************186 Array187 (188 189 )190 Array191 (192 193 )194 Array195 (196 197 198 199 200 201 )202 Array203 (204 205 206 207 208 )209 ************************************************************************/208 * print_r (get_feed_from_url("contrib.spip.net")); 209 * print_r (get_feed_from_url("http://liberation.fr/")); 210 * print_r (get_feed_from_url("cnn.com")); 211 * print_r (get_feed_from_url("http://willy.boerland.com/myblog/")); 212 ***************************** Resultat ***************************************** 213 * Array 214 * ( 215 * [0] => http://contrib.spip.net/backend.php 216 * ) 217 * Array 218 * ( 219 * [0] => http://www.liberation.fr/rss.php 220 * ) 221 * Array 222 * ( 223 * [0] => http://rss.cnn.com/rss/cnn_topstories.rss 224 * [1] => http://rss.cnn.com/rss/cnn_latest.rss 225 * [2] => http://www.cnn.com/services/rss/ 226 * [3] => http://www.cnn.com/services/rss/ 227 * [4] => http://www.cnn.com/services/rss/ 228 * ) 229 * Array 230 * ( 231 * [0] => http://willy.boerland.com/myblog/atom/feed 232 * [1] => http://willy.boerland.com/myblog/blogapi/rsd 233 * [2] => http://willy.boerland.com/myblog/rss.xml 234 * [3] => http://willy.boerland.com/myblog/node/feed 235 * ) 236 ************************************************************************/ 210 237 211 238 ?> -
_core_/plugins/sites/inc/site.php
r92993 r93624 15 15 * 16 16 * @package SPIP\Sites\Fonctions 17 **/ 18 if (!defined("_ECRIRE_INC_VERSION")) return; 17 **/ 18 if (!defined("_ECRIRE_INC_VERSION")) { 19 return; 20 } 19 21 20 22 … … 27 29 * - array : informations du site 28 30 * - false : site impossible à récupérer 29 **/31 **/ 30 32 function analyser_site($url) { 31 33 include_spip('inc/filtres'); … … 34 36 // Accepter les URLs au format feed:// ou qui ont oublie le http:// 35 37 $url = preg_replace(',^feed://,i', 'http://', $url); 36 if (!preg_match(',^[a-z]+://,i', $url)) $url = 'http://'.$url; 38 if (!preg_match(',^[a-z]+://,i', $url)) { 39 $url = 'http://' . $url; 40 } 37 41 38 42 $texte = recuperer_page($url, true); 39 if (!$texte) return false; 43 if (!$texte) { 44 return false; 45 } 40 46 41 47 include_spip('inc/syndic'); … … 43 49 44 50 if (preg_match(',<(channel|feed)([\:[:space:]][^>]*)?' 45 .'>(.*)</\1>,ims', $texte, $regs)) {51 . '>(.*)</\1>,ims', $texte, $regs)) { 46 52 $result['syndication'] = 'oui'; 47 53 $result['url_syndic'] = $url; … … 53 59 extraire_balises($channel, 'entry') 54 60 ); 55 $header = str_replace($b, array(),$channel);61 $header = str_replace($b, array(), $channel); 56 62 57 63 if ($t = extraire_balise($header, 'title')) { … … 63 69 foreach ($t as $link) { 64 70 $u = supprimer_tags(filtrer_entites($link)); 65 if (!strlen($u)) 71 if (!strlen($u)) { 66 72 $u = extraire_attribut($link, 'href'); 73 } 67 74 if (strlen($u)) { 68 75 // on installe l'url comme url du site 69 76 // si c'est non vide, en donnant la priorite a rel=alternate 70 77 if (preg_match(',\balternate\b,', extraire_attribut($link, 'rel')) 71 OR !isset($result['url_site'])) 78 OR !isset($result['url_site']) 79 ) { 72 80 $result['url_site'] = filtrer_entites($u); 81 } 73 82 } 74 83 } … … 77 86 78 87 if ($a = extraire_balise($header, 'description') 79 OR $a = extraire_balise($header, 'tagline')) { 88 OR $a = extraire_balise($header, 'tagline') 89 ) { 80 90 cdata_echappe_retour($a, $echappe_cdata); 81 91 $result['descriptif'] = filtrer_entites(supprimer_tags($a)); … … 83 93 84 94 if (preg_match(',<image.*<url.*>(.*)</url>.*</image>,Uims', 85 $header, $r) 86 AND preg_match(',(https?://.*/.*(gif|png|jpg)),ims', $r[1], $r) 87 AND $image = recuperer_infos_distantes($r[1])) { 95 $header, $r) 96 AND preg_match(',(https?://.*/.*(gif|png|jpg)),ims', $r[1], $r) 97 AND $image = recuperer_infos_distantes($r[1]) 98 ) { 88 99 if (in_array($image['extension'], array('gif', 'jpg', 'png'))) { 89 100 $result['format_logo'] = $image['extension']; 90 101 $result['logo'] = $r[1]; 91 } 92 else if ($image['fichier']) { 93 spip_unlink($image['fichier']); 102 } else { 103 if ($image['fichier']) { 104 spip_unlink($image['fichier']); 105 } 94 106 } 95 107 } 96 } 97 else { 108 } else { 98 109 $result['syndication'] = 'non'; 99 110 $result['url_site'] = $url; 100 111 if (preg_match(',<head>(.*(description|title).*)</head>,Uims', $texte, $regs)) { 101 112 $head = filtrer_entites($regs[1]); 102 } else 113 } else { 103 114 $head = $texte; 115 } 104 116 105 if (preg_match(',<title[^>]*>(.*),ims', $head, $regs)) {117 if (preg_match(',<title[^>]*>(.*),ims', $head, $regs)) { 106 118 $titre = trim($regs[1]); 107 if (!strlen($titre)) {108 $titre = substr($head, strpos($head,$regs[0]));119 if (!strlen($titre)) { 120 $titre = substr($head, strpos($head, $regs[0])); 109 121 } 110 122 $result['nom_site'] = filtrer_entites(supprimer_tags(preg_replace(',</title>.*$,ims', '', $titre))); … … 114 126 extraire_balises($head, 'meta'), 115 127 extraire_balises($head, 'http-equiv') 116 )) { 117 foreach($a as $meta) { 128 ) 129 ) { 130 foreach ($a as $meta) { 118 131 if (extraire_attribut($meta, 'name') == 'description') { 119 132 $desc = trim(extraire_attribut($meta, 'content')); 120 if (!strlen($desc)) 133 if (!strlen($desc)) { 121 134 $desc = trim(extraire_attribut($meta, 'value')); 135 } 122 136 $result['descriptif'] = $desc; 123 137 } … … 132 146 // ce qui constitue un signal pour exec=sites qui proposera de choisir 133 147 // si on syndique, et quelle url. 134 if (count($feeds) >=1) {135 spip_log("feedfinder.php :\n" .join("\n", $feeds));136 $result['url_syndic'] = "select: " .join(' ',$feeds);148 if (count($feeds) >= 1) { 149 spip_log("feedfinder.php :\n" . join("\n", $feeds)); 150 $result['url_syndic'] = "select: " . join(' ', $feeds); 137 151 } 138 152 } 139 153 140 154 cdata_echappe_retour($result, $echappe_cdata); 155 141 156 return $result; 142 157 } -
_core_/plugins/sites/inc/syndic.php
r93092 r93624 15 15 * 16 16 * @package SPIP\Sites\Syndication 17 **/ 18 19 if (!defined("_ECRIRE_INC_VERSION")) return; 17 **/ 18 19 if (!defined("_ECRIRE_INC_VERSION")) { 20 return; 21 } 20 22 21 23 // ATTENTION … … 37 39 * - array : tableau des items lus, 38 40 * - string : texte d'erreur 39 **/41 **/ 40 42 function analyser_backend($rss, $url_syndic = '') { 41 43 include_spip('inc/texte'); # pour couper() … … 60 62 list($header) = preg_split(',<(item|entry)\b,', $rss, 2); 61 63 if (preg_match_all( 62 ',<(author|creator)\b(.*)</\1>,Uims',63 $header, $regs, PREG_SET_ORDER)) {64 ',<(author|creator)\b(.*)</\1>,Uims', 65 $header, $regs, PREG_SET_ORDER)) { 64 66 $les_auteurs_du_site = array(); 65 67 foreach ($regs as $reg) { 66 68 $nom = $reg[2]; 67 if (preg_match(',<name>(.*)</name>,Uims', $nom, $reg)) 69 if (preg_match(',<name>(.*)</name>,Uims', $nom, $reg)) { 68 70 $nom = $reg[1]; 71 } 69 72 $les_auteurs_du_site[] = trim(textebrut(filtrer_entites($nom))); 70 73 } … … 76 79 $langue_du_site = ''; 77 80 78 if ((preg_match(',<([^>]*xml:)?lang(uage)?' .'>([^<>]+)<,i',79 $header, $match) AND $l = $match[3])80 OR ($l = extraire_attribut(extraire_balise($header, 'feed'), 'xml:lang'))81 if ((preg_match(',<([^>]*xml:)?lang(uage)?' . '>([^<>]+)<,i', 82 $header, $match) AND $l = $match[3]) 83 OR ($l = extraire_attribut(extraire_balise($header, 'feed'), 'xml:lang')) 81 84 ) { 82 85 $langue_du_site = $l; 83 } 84 // atom 86 } // atom 85 87 elseif (preg_match(',<feed\s[^>]*xml:lang=[\'"]([^<>\'"]+)[\'"],i', $header, $match)) { 86 88 $langue_du_site = $match[1]; … … 95 97 // 96 98 97 if (!count($items)) return _T('sites:avis_echec_syndication_01'); 99 if (!count($items)) { 100 return _T('sites:avis_echec_syndication_01'); 101 } 98 102 99 103 foreach ($items as $item) { … … 106 110 // gymnastique 107 111 if (preg_match(',<guid.*>[[:space:]]*(https?:[^<]*)</guid>,Uims', 108 $item, $regs) AND preg_match(',^(true|1)?$,i', 109 extraire_attribut($regs[0], 'ispermalink'))) 112 $item, $regs) AND preg_match(',^(true|1)?$,i', 113 extraire_attribut($regs[0], 'ispermalink')) 114 ) { 110 115 $data['url'] = $regs[1]; 111 // contourner les redirections feedburner 112 else if (_SYNDICATION_DEREFERENCER_URL 113 AND preg_match(',<feedburner:origLink>(.*)<,Uims', 114 $item, $regs)) 115 $data['url'] = $regs[1]; 116 // <link>, plus classique 117 else if (preg_match( 118 ',<link[^>]*[[:space:]]rel=["\']?alternate[^>]*>(.*)</link>,Uims', 119 $item, $regs)) 120 $data['url'] = $regs[1]; 121 else if (preg_match(',<link[^>]*[[:space:]]rel=.alternate[^>]*>,Uims', 122 $item, $regs)) 123 $data['url'] = extraire_attribut($regs[0], 'href'); 124 else if (preg_match(',<link[^>]*>\s*([^\s]+)\s*</link>,Uims', $item, $regs)) 125 $data['url'] = $regs[1]; 126 else if (preg_match(',<link[^>]*>,Uims', $item, $regs)) 127 $data['url'] = extraire_attribut($regs[0], 'href'); 128 129 // Aucun link ni guid, mais une enclosure 130 else if (preg_match(',<enclosure[^>]*>,ims', $item, $regs) 131 AND $url = extraire_attribut($regs[0], 'url')) 132 $data['url'] = $url; 133 134 // pas d'url, c'est genre un compteur... 135 else 136 $data['url'] = ''; 116 } // contourner les redirections feedburner 117 else { 118 if (_SYNDICATION_DEREFERENCER_URL 119 AND preg_match(',<feedburner:origLink>(.*)<,Uims', 120 $item, $regs) 121 ) { 122 $data['url'] = $regs[1]; 123 } // <link>, plus classique 124 else { 125 if (preg_match( 126 ',<link[^>]*[[:space:]]rel=["\']?alternate[^>]*>(.*)</link>,Uims', 127 $item, $regs)) { 128 $data['url'] = $regs[1]; 129 } else { 130 if (preg_match(',<link[^>]*[[:space:]]rel=.alternate[^>]*>,Uims', 131 $item, $regs)) { 132 $data['url'] = extraire_attribut($regs[0], 'href'); 133 } else { 134 if (preg_match(',<link[^>]*>\s*([^\s]+)\s*</link>,Uims', $item, $regs)) { 135 $data['url'] = $regs[1]; 136 } else { 137 if (preg_match(',<link[^>]*>,Uims', $item, $regs)) { 138 $data['url'] = extraire_attribut($regs[0], 'href'); 139 } // Aucun link ni guid, mais une enclosure 140 else { 141 if (preg_match(',<enclosure[^>]*>,ims', $item, $regs) 142 AND $url = extraire_attribut($regs[0], 'url') 143 ) { 144 $data['url'] = $url; 145 } // pas d'url, c'est genre un compteur... 146 else { 147 $data['url'] = ''; 148 } 149 } 150 } 151 } 152 } 153 } 154 } 137 155 138 156 // Titre (semi-obligatoire) 139 if (preg_match(",<title[^>]*>(.*?)</title>,ims", $item,$match))157 if (preg_match(",<title[^>]*>(.*?)</title>,ims", $item, $match)) { 140 158 $data['titre'] = $match[1]; 141 else if (preg_match(',<link[[:space:]][^>]*>,Uims',$item,$mat) 142 AND $title = extraire_attribut($mat[0], 'title')) 143 $data['titre'] = $title; 144 if (!strlen($data['titre'] = trim($data['titre']))) 159 } else { 160 if (preg_match(',<link[[:space:]][^>]*>,Uims', $item, $mat) 161 AND $title = extraire_attribut($mat[0], 'title') 162 ) { 163 $data['titre'] = $title; 164 } 165 } 166 if (!strlen($data['titre'] = trim($data['titre']))) { 145 167 $data['titre'] = _T('ecrire:info_sans_titre'); 168 } 146 169 147 170 // Date 148 171 $la_date = ''; 149 172 if (preg_match(',<(published|modified|issued)>([^<]*)<,Uims', 150 $item,$match)) {173 $item, $match)) { 151 174 cdata_echappe_retour($match[2], $echappe_cdata); 152 175 $la_date = my_strtotime($match[2], $langue_du_site); 153 176 } 154 177 if (!$la_date AND 155 preg_match(',<(pubdate)>([^<]*)<,Uims',$item, $match)) { 178 preg_match(',<(pubdate)>([^<]*)<,Uims', $item, $match) 179 ) { 156 180 cdata_echappe_retour($match[2], $echappe_cdata); 157 181 $la_date = my_strtotime($match[2], $langue_du_site); 158 182 } 159 183 if (!$la_date AND 160 preg_match(',<([a-z]+:date)>([^<]*)<,Uims',$item,$match)) { 184 preg_match(',<([a-z]+:date)>([^<]*)<,Uims', $item, $match) 185 ) { 161 186 cdata_echappe_retour($match[2], $echappe_cdata); 162 187 $la_date = my_strtotime($match[2], $langue_du_site); 163 188 } 164 189 if (!$la_date AND 165 preg_match(',<date>([^<]*)<,Uims',$item,$match)) { 190 preg_match(',<date>([^<]*)<,Uims', $item, $match) 191 ) { 166 192 cdata_echappe_retour($match[1], $echappe_cdata); 167 193 $la_date = my_strtotime($match[1], $langue_du_site); … … 174 200 if ($GLOBALS['controler_dates_rss']) { 175 201 if (!$la_date 176 OR $la_date > time() + 48 * 3600) 202 OR $la_date > time()+48*3600 203 ) { 177 204 $la_date = time(); 178 } 179 180 if ($la_date) 205 } 206 } 207 208 if ($la_date) { 181 209 $data['date'] = $la_date; 210 } 182 211 183 212 // Honorer le <lastbuilddate> en forcant la date 184 213 if (preg_match(',<(lastbuilddate|updated|modified)>([^<>]+)</\1>,i', 185 $item, $regs) 186 AND $lastbuilddate = my_strtotime(trim($regs[2]), $langue_du_site) 187 // pas dans le futur 188 AND $lastbuilddate < time()) 214 $item, $regs) 215 AND $lastbuilddate = my_strtotime(trim($regs[2]), $langue_du_site) 216 // pas dans le futur 217 AND $lastbuilddate < time() 218 ) { 189 219 $data['lastbuilddate'] = $lastbuilddate; 220 } 190 221 191 222 // Auteur(s) 192 223 if (preg_match_all( 193 ',<(author|creator)\b[^>]*>(.*)</\1>,Uims',194 $item, $regs, PREG_SET_ORDER)) {224 ',<(author|creator)\b[^>]*>(.*)</\1>,Uims', 225 $item, $regs, PREG_SET_ORDER)) { 195 226 $auteurs = array(); 196 227 foreach ($regs as $reg) { 197 228 $nom = $reg[2]; 198 if (preg_match(',<name\b[^>]*>(.*)</name>,Uims', $nom, $reg)) 229 if (preg_match(',<name\b[^>]*>(.*)</name>,Uims', $nom, $reg)) { 199 230 $nom = $reg[1]; 231 } 200 232 // Cas particulier d'un auteur Flickr 201 if (preg_match(',nobody@flickr.com \((.*)\),Uims', $nom, $reg)) 233 if (preg_match(',nobody@flickr.com \((.*)\),Uims', $nom, $reg)) { 202 234 $nom = $reg[1]; 235 } 203 236 $auteurs[] = trim(textebrut(filtrer_entites($nom))); 204 237 } 205 238 $data['lesauteurs'] = join(', ', array_unique($auteurs)); 206 } 207 else 239 } else { 208 240 $data['lesauteurs'] = $les_auteurs_du_site; 241 } 209 242 210 243 // Description 211 244 if (preg_match(',<(description|summary)\b.*' 212 .'>(.*)</\1\b,Uims',$item,$match)) {245 . '>(.*)</\1\b,Uims', $item, $match)) { 213 246 $data['descriptif'] = trim($match[2]); 214 247 } 215 248 if (preg_match(',<(content)\b.*' 216 .'>(.*)</\1\b,Uims',$item,$match)) {249 . '>(.*)</\1\b,Uims', $item, $match)) { 217 250 $data['content'] = trim($match[2]); 218 251 } 219 252 220 253 // lang 221 if (preg_match(',<([^>]*xml:)?lang(uage)?' .'>([^<>]+)<,i',222 $item, $match)) 254 if (preg_match(',<([^>]*xml:)?lang(uage)?' . '>([^<>]+)<,i', 255 $item, $match)) { 223 256 $data['lang'] = trim($match[3]); 224 else if ($lang = trim(extraire_attribut($item, 'xml:lang'))) 225 $data['lang'] = $lang; 226 else 227 $data['lang'] = trim($langue_du_site); 257 } else { 258 if ($lang = trim(extraire_attribut($item, 'xml:lang'))) { 259 $data['lang'] = $lang; 260 } else { 261 $data['lang'] = trim($langue_du_site); 262 } 263 } 228 264 229 265 // source et url_source (pas trouve d'exemple en ligne !!) … … 231 267 # <source url="http://www.truc.net/rss">Site source</source> 232 268 if (preg_match(',(<source[^>]*>)(([^<>]+)</source>)?,i', 233 $item, $match)) {269 $item, $match)) { 234 270 $data['source'] = trim($match[3]); 235 271 $data['url_source'] = str_replace('&', '&', … … 245 281 $tags = array(); 246 282 if (preg_match_all( 247 ',<(([a-z]+:)?(subject|category|directory|keywords?|tags?|type))[^>]*>' 248 .'(.*?)</\1>,ims', 249 $item, $matches, PREG_SET_ORDER)) 250 $tags = ajouter_tags($matches, $item); # array() 283 ',<(([a-z]+:)?(subject|category|directory|keywords?|tags?|type))[^>]*>' 284 . '(.*?)</\1>,ims', 285 $item, $matches, PREG_SET_ORDER)) { 286 $tags = ajouter_tags($matches, $item); 287 } # array() 251 288 elseif (preg_match_all( 252 ',<(([a-z]+:)?(subject|category|directory|keywords?|tags?|type))[^>]*/>' 253 .',ims', 254 $item, $matches, PREG_SET_ORDER)) 255 $tags = ajouter_tags($matches, $item); # array() 289 ',<(([a-z]+:)?(subject|category|directory|keywords?|tags?|type))[^>]*/>' 290 . ',ims', 291 $item, $matches, PREG_SET_ORDER)) { 292 $tags = ajouter_tags($matches, $item); 293 } # array() 256 294 // Pieces jointes : 257 295 // chercher <enclosure> au format RSS et les passer en microformat … … 264 302 if (preg_match_all(',<enclosure[[:space:]][^<>]+>,i', 265 303 $item, $matches, PREG_PATTERN_ORDER)) { 266 304 $enclosures += array_map('enclosure2microformat', $matches[0]); 267 305 } 268 306 # atom 269 if (preg_match_all(',<link\b[^<>]+rel=["\']?enclosure["\']?[^<>]+>,i', 307 if (preg_match_all(',<link\b[^<>]+rel=["\']?enclosure["\']?[^<>]+>,i', 270 308 $item, $matches, PREG_PATTERN_ORDER)) { 271 309 $enclosures += array_map('enclosure2microformat', $matches[0]); 272 310 } 273 311 # media rss 274 if (preg_match_all(',<media:content\b[^<>]+>,i', 312 if (preg_match_all(',<media:content\b[^<>]+>,i', 275 313 $item, $matches, PREG_PATTERN_ORDER)) { 276 314 $enclosures += array_map('enclosure2microformat', $matches[0]); 277 315 } 278 316 $data['enclosures'] = join(', ', array_unique($enclosures)); … … 289 327 290 328 // si on demande un dereferencement de l'URL, il faut verifier que ce n'est pas une redirection 291 if (_SYNDICATION_DEREFERENCER_URL) {329 if (_SYNDICATION_DEREFERENCER_URL) { 292 330 $target = $data['url']; 293 331 include_spip("inc/distant"); 294 for ($i = 0; $i <10; $i++){332 for ($i = 0; $i < 10; $i++) { 295 333 // on fait un GET et pas un HEAD car les vieux SPIP ne repondent pas la redirection avec un HEAD (honte) sur un article virtuel 296 334 $res = recuperer_lapage($target, false, "GET", 4096); 297 if (!$res) break; // c'est pas bon signe car on a pas trouve l'URL... 298 if (is_array($res)) break; // on a trouve la page, donc on a l'URL finale 335 if (!$res) { 336 break; 337 } // c'est pas bon signe car on a pas trouve l'URL... 338 if (is_array($res)) { 339 break; 340 } // on a trouve la page, donc on a l'URL finale 299 341 $target = $res; // c'est une redirection, on la suit pour voir ou elle mene 300 342 } … … 305 347 // Trouver les microformats (ecrase les <category> et <dc:subject>) 306 348 if (preg_match_all( 307 ',<a[[:space:]]([^>]+[[:space:]])?rel=[^>]+>.*</a>,Uims',308 $data['item'], $regs, PREG_PATTERN_ORDER)) {349 ',<a[[:space:]]([^>]+[[:space:]])?rel=[^>]+>.*</a>,Uims', 350 $data['item'], $regs, PREG_PATTERN_ORDER)) { 309 351 $tags = $regs[0]; 310 352 } 311 353 // Cas particulier : tags Connotea sous la forme <a class="postedtag"> 312 354 if (preg_match_all( 313 ',<a[[:space:]][^>]+ class="postedtag"[^>]*>.*</a>,Uims',314 $data['item'], $regs, PREG_PATTERN_ORDER))355 ',<a[[:space:]][^>]+ class="postedtag"[^>]*>.*</a>,Uims', 356 $data['item'], $regs, PREG_PATTERN_ORDER)) { 315 357 $tags = preg_replace(', class="postedtag",i', 316 ' rel="tag"', $regs[0]); 358 ' rel="tag"', $regs[0]); 359 } 317 360 318 361 $data['tags'] = $tags; … … 331 374 * 332 375 * Car hélàs, strtotime ne le reconnait pas tout seul ! 376 * 333 377 * @link http://www.w3.org/TR/NOTE-datetime Format datetime du W3C 334 * 378 * 335 379 * @param string $la_date 336 380 * Date à parser 337 381 * @return int 338 382 * Timestamp 339 **/383 **/ 340 384 function my_strtotime($la_date, $lang = null) { 341 385 // format complet 342 386 if (preg_match( 343 ',^(\d+-\d+-\d+[T ]\d+:\d+(:\d+)?)(\.\d+)?'344 .'(Z|([-+]\d{2}):\d+)?$,',345 $la_date, $match)) {387 ',^(\d+-\d+-\d+[T ]\d+:\d+(:\d+)?)(\.\d+)?' 388 . '(Z|([-+]\d{2}):\d+)?$,', 389 $la_date, $match)) { 346 390 $match = array_pad($match, 6, null); 347 $la_date = str_replace("T", " ", $match[1])." GMT"; 348 return strtotime($la_date) - intval($match[5]) * 3600; 391 $la_date = str_replace("T", " ", $match[1]) . " GMT"; 392 393 return strtotime($la_date)-intval($match[5])*3600; 349 394 } 350 395 351 396 // YYYY 352 if (preg_match(',^\d{4}$,', $la_date, $match)) 353 return strtotime($match[0]."-01-01"); 397 if (preg_match(',^\d{4}$,', $la_date, $match)) { 398 return strtotime($match[0] . "-01-01"); 399 } 354 400 355 401 // YYYY-MM 356 if (preg_match(',^\d{4}-\d{2}$,', $la_date, $match)) 357 return strtotime($match[0]."-01"); 402 if (preg_match(',^\d{4}-\d{2}$,', $la_date, $match)) { 403 return strtotime($match[0] . "-01"); 404 } 358 405 359 406 // YYYY-MM-DD hh:mm:ss 360 if (preg_match(',^\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2}\b,', $la_date, $match)) 407 if (preg_match(',^\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2}\b,', $la_date, $match)) { 361 408 return strtotime($match[0]); 409 } 362 410 363 411 // utiliser strtotime en dernier ressort 364 412 // en nettoyant le jour qui prefixe parfois la date, suivi d'une virgule 365 413 // et les UT qui sont en fait des UTC 366 $la_date_c = preg_replace("/^\w+,\s*/ms","",$la_date); 367 $la_date_c = preg_replace("/UT\s*$/ms","UTC",$la_date_c); 368 if ($s=strtotime($la_date) 369 OR $s=strtotime($la_date_c)) 414 $la_date_c = preg_replace("/^\w+,\s*/ms", "", $la_date); 415 $la_date_c = preg_replace("/UT\s*$/ms", "UTC", $la_date_c); 416 if ($s = strtotime($la_date) 417 OR $s = strtotime($la_date_c) 418 ) { 370 419 return $s; 420 } 371 421 372 422 // essayons de voir si le nom du mois est dans la langue du flux et remplacons le 373 423 // par la version anglaise avant de faire strtotime 374 if ($lang) {424 if ($lang) { 375 425 // "fr-fr" 376 426 list($lang) = explode("-", $lang); 377 427 static $months = null; 378 if (!isset($months[$lang])) {428 if (!isset($months[$lang])) { 379 429 $prev_lang = $GLOBALS['spip_lang']; 380 430 changer_langue($lang); 381 foreach (range(1,12) as $m){431 foreach (range(1, 12) as $m) { 382 432 $s = _T("date_mois_$m"); 383 $months[$lang][$s] = date("M", strtotime("2013-$m-01"));384 $s = _T("date_mois_" .$m."_abbr");385 $months[$lang][$s] = date("M", strtotime("2013-$m-01"));386 $months[$lang][trim($s, ".")] = date("M",strtotime("2013-$m-01"));433 $months[$lang][$s] = date("M", strtotime("2013-$m-01")); 434 $s = _T("date_mois_" . $m . "_abbr"); 435 $months[$lang][$s] = date("M", strtotime("2013-$m-01")); 436 $months[$lang][trim($s, ".")] = date("M", strtotime("2013-$m-01")); 387 437 } 388 438 changer_langue($prev_lang); 389 439 } 390 spip_log($la_date_c, "dbgs");391 foreach ($months[$lang] as $loc=>$en){392 if (stripos($la_date_c, $loc)!==false){393 $s =str_ireplace($loc,$en,$la_date_c);394 if ($s =strtotime($s))440 spip_log($la_date_c, "dbgs"); 441 foreach ($months[$lang] as $loc => $en) { 442 if (stripos($la_date_c, $loc) !== false) { 443 $s = str_ireplace($loc, $en, $la_date_c); 444 if ($s = strtotime($s)) { 395 445 return $s; 446 } 396 447 } 397 448 } … … 400 451 // erreur 401 452 spip_log("Impossible de lire le format de date '$la_date'"); 453 402 454 return false; 403 455 } … … 407 459 // http://code.spip.net/@creer_tag 408 460 function creer_tag($mot, $type, $url) { 409 if (!strlen($mot = trim($mot))) return ''; 461 if (!strlen($mot = trim($mot))) { 462 return ''; 463 } 410 464 $mot = "<a rel=\"tag\">$mot</a>"; 411 if ($url) 465 if ($url) { 412 466 $mot = inserer_attribut($mot, 'href', $url); 413 if ($type) 467 } 468 if ($type) { 414 469 $mot = inserer_attribut($mot, 'rel', $type); 470 } 471 415 472 return $mot; 416 473 } … … 423 480 foreach ($matches as $match) { 424 481 $type = ($match[3] == 'category' OR $match[3] == 'directory') 425 ? 'directory' :'tag';482 ? 'directory' : 'tag'; 426 483 $mot = supprimer_tags($match[0]); 427 484 if (!strlen($mot) 428 AND !strlen($mot = extraire_attribut($match[0], 'label'))) 485 AND !strlen($mot = extraire_attribut($match[0], 'label')) 486 ) { 429 487 break; 488 } 430 489 // rechercher un url 431 490 if ($url = extraire_attribut($match[0], 'domain')) { … … 434 493 // on donnait category@domain = #URL_RUBRIQUE, et 435 494 // text = #TITRE_RUBRIQUE ; d'ou l'heuristique suivante sur le slash 436 if (substr($url, -1) == '/') 495 if (substr($url, -1) == '/') { 437 496 $url .= rawurlencode($mot); 438 } 439 else if ($url = extraire_attribut($match[0], 'resource') 440 OR $url = extraire_attribut($match[0], 'url') 441 ) 442 {} 443 444 ## cas particuliers 445 else if (extraire_attribut($match[0], 'scheme') == 'urn:flickr:tags') { 446 foreach(explode(' ', $mot) as $petit) 447 if ($t = creer_tag($petit, $type, 448 'http://www.flickr.com/photos/tags/'.rawurlencode($petit).'/')) 449 $tags[] = $t; 450 $mot = ''; 451 } 452 else if ( 453 // cas atom1, a faire apres flickr 454 $term = extraire_attribut($match[0], 'term') 455 ) { 456 if ($scheme = extraire_attribut($match[0], 'scheme')) 457 $url = suivre_lien($scheme,$term); 458 else 459 $url = $term; 460 } 461 else { 462 # type delicious.com 463 foreach(explode(' ', $mot) as $petit) 464 if (preg_match(',<rdf\b[^>]*\bresource=["\']([^>]*/' 465 .preg_quote(rawurlencode($petit),',').')["\'],i', 466 $item, $m)) { 497 } 498 } else { 499 if ($url = extraire_attribut($match[0], 'resource') 500 OR $url = extraire_attribut($match[0], 'url') 501 ) { 502 } ## cas particuliers 503 else { 504 if (extraire_attribut($match[0], 'scheme') == 'urn:flickr:tags') { 505 foreach (explode(' ', $mot) as $petit) { 506 if ($t = creer_tag($petit, $type, 507 'http://www.flickr.com/photos/tags/' . rawurlencode($petit) . '/') 508 ) { 509 $tags[] = $t; 510 } 511 } 467 512 $mot = ''; 468 if ($t = creer_tag($petit, $type, $m[1])) 469 $tags[] = $t; 513 } else { 514 if ( 515 // cas atom1, a faire apres flickr 516 $term = extraire_attribut($match[0], 'term') 517 ) { 518 if ($scheme = extraire_attribut($match[0], 'scheme')) { 519 $url = suivre_lien($scheme, $term); 520 } else { 521 $url = $term; 522 } 523 } else { 524 # type delicious.com 525 foreach (explode(' ', $mot) as $petit) { 526 if (preg_match(',<rdf\b[^>]*\bresource=["\']([^>]*/' 527 . preg_quote(rawurlencode($petit), ',') . ')["\'],i', 528 $item, $m)) { 529 $mot = ''; 530 if ($t = creer_tag($petit, $type, $m[1])) { 531 $tags[] = $t; 532 } 533 } 534 } 535 } 470 536 } 471 } 472 473 if ($t = creer_tag($mot, $type, $url)) 537 } 538 } 539 540 if ($t = creer_tag($mot, $type, $url)) { 474 541 $tags[] = $t; 475 } 542 } 543 } 544 476 545 return $tags; 477 546 } … … 483 552 $echappe_cdata = array(); 484 553 if (preg_match_all(',<!\[CDATA\[(.*)]]>,Uims', $rss, 485 $regs, PREG_SET_ORDER)) {554 $regs, PREG_SET_ORDER)) { 486 555 foreach ($regs as $n => $reg) { 487 556 if (preg_match(',[<>],', $reg[1])) { 488 557 $echappe_cdata[$n] = $reg[1]; 489 558 $rss = str_replace($reg[0], "@@@SPIP_CDATA$n@@@", $rss); 490 } else 559 } else { 491 560 $rss = str_replace($reg[0], $reg[1], $rss); 561 } 492 562 } 493 563 } … … 499 569 if (is_string($x)) { 500 570 if (strpos($x, '@@@SPIP_CDATA') !== false 501 OR strpos($x, '<') !== false) { 571 OR strpos($x, '<') !== false 572 ) { 502 573 $x = filtrer_entites($x); 503 foreach ($echappe_cdata as $n => $e) 574 foreach ($echappe_cdata as $n => $e) { 504 575 $x = str_replace("@@@SPIP_CDATA$n@@@", $e, $x); 505 } 506 } 507 508 else if (is_array($x)) { 509 foreach($x as $k => &$v) 510 cdata_echappe_retour($v, $echappe_cdata); 511 } 512 } 576 } 577 } 578 } else { 579 if (is_array($x)) { 580 foreach ($x as $k => &$v) { 581 cdata_echappe_retour($v, $echappe_cdata); 582 } 583 } 584 } 585 } 586 513 587 ?> -
_core_/plugins/sites/liens/implicite_site.php
r93092 r93624 11 11 \***************************************************************************/ 12 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; 13 if (!defined("_ECRIRE_INC_VERSION")) { 14 return; 15 } 14 16 15 function liens_implicite_site_dist($texte, $id, $type, $args, $ancre, $connect = '') {16 if (!$id = intval($id)) 17 function liens_implicite_site_dist($texte, $id, $type, $args, $ancre, $connect = '') { 18 if (!$id = intval($id)) { 17 19 return false; 18 $url = sql_getfetsel('url_site', 'spip_syndic', "id_syndic=".intval($id),'','','','',$connect); 20 } 21 $url = sql_getfetsel('url_site', 'spip_syndic', "id_syndic=" . intval($id), '', '', '', '', $connect); 22 19 23 return $url; 20 24 } -
_core_/plugins/sites/prive/objets/liste/syndic_articles_fonctions.php
r79783 r93624 11 11 \***************************************************************************/ 12 12 13 if (!defined('_ECRIRE_INC_VERSION')) return; 13 if (!defined('_ECRIRE_INC_VERSION')) { 14 return; 15 } 14 16 15 17 /** 16 18 * Un test sur les articles syndiques 17 19 * pour "depublier les items qui ne figurent plsu dans le flux" 20 * 18 21 * @global <type> $my_sites 19 22 * @param <type> $id 20 23 * @return <type> 21 24 */ 22 function filtre_test_syndic_article_miroir_dist($id) {23 if (isset($GLOBALS['my_sites'][$id]['miroir']) AND $GLOBALS['my_sites'][$id]['miroir'] == 'oui') 25 function filtre_test_syndic_article_miroir_dist($id) { 26 if (isset($GLOBALS['my_sites'][$id]['miroir']) AND $GLOBALS['my_sites'][$id]['miroir'] == 'oui') { 24 27 return ' '; 28 } 29 25 30 return ''; 26 31 } -
_core_/plugins/sites/puce_statut/site.php
r93092 r93624 11 11 \***************************************************************************/ 12 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; 13 if (!defined("_ECRIRE_INC_VERSION")) { 14 return; 15 } 14 16 15 17 16 18 // http://code.spip.net/@puce_statut_site_dist 17 function puce_statut_site_dist($id, $statut, $id_rubrique, $type, $ajax = '', $menu_rapide = _ACTIVER_PUCE_RAPIDE) {19 function puce_statut_site_dist($id, $statut, $id_rubrique, $type, $ajax = '', $menu_rapide = _ACTIVER_PUCE_RAPIDE) { 18 20 19 $t = sql_getfetsel("syndication", "spip_syndic", "id_syndic=" .intval($id));21 $t = sql_getfetsel("syndication", "spip_syndic", "id_syndic=" . intval($id)); 20 22 21 23 // cas particulier des sites en panne de syndic : … … 37 39 break; 38 40 } 41 39 42 return http_img_pack($puce, $title); 43 } else { 44 return puce_statut_changement_rapide($id, $statut, $id_rubrique, $type, $ajax, $menu_rapide); 40 45 } 41 else42 return puce_statut_changement_rapide($id,$statut,$id_rubrique,$type,$ajax,$menu_rapide);43 46 } 44 47 -
_core_/plugins/sites/sites_administrations.php
r93092 r93624 11 11 \***************************************************************************/ 12 12 13 if (!defined('_ECRIRE_INC_VERSION')) return; 13 if (!defined('_ECRIRE_INC_VERSION')) { 14 return; 15 } 14 16 15 17 /** … … 19 21 * @param string $version_cible 20 22 */ 21 function sites_upgrade($nom_meta_base_version, $version_cible) {23 function sites_upgrade($nom_meta_base_version, $version_cible) { 22 24 // cas particulier : 23 25 // si plugin pas installe mais que la table existe 24 26 // considerer que c'est un upgrade depuis v 1.0.0 25 27 // pour gerer l'historique des installations SPIP <=2.1 26 if (!isset($GLOBALS['meta'][$nom_meta_base_version])) {27 $trouver_table = charger_fonction('trouver_table', 'base');28 if (!isset($GLOBALS['meta'][$nom_meta_base_version])) { 29 $trouver_table = charger_fonction('trouver_table', 'base'); 28 30 if ($desc = $trouver_table('spip_syndic') 29 AND isset($desc['exist']) AND $desc['exist']){ 30 ecrire_meta($nom_meta_base_version,'1.0.0'); 31 AND isset($desc['exist']) AND $desc['exist'] 32 ) { 33 ecrire_meta($nom_meta_base_version, '1.0.0'); 31 34 } 32 35 // si pas de table en base, on fera une simple creation de base … … 35 38 $maj = array(); 36 39 $maj['create'] = array( 37 array('maj_tables', array('spip_syndic','spip_syndic_articles')),40 array('maj_tables', array('spip_syndic', 'spip_syndic_articles')), 38 41 ); 39 42 40 43 $maj['1.1.0'] = array( 41 array('sql_alter', "TABLE spip_syndic_articles DROP key url"),42 array('sql_alter', "TABLE spip_syndic_articles CHANGE url url text DEFAULT '' NOT NULL"),43 array('sql_alter', "TABLE spip_syndic_articles ADD INDEX url(url(255))")44 array('sql_alter', "TABLE spip_syndic_articles DROP key url"), 45 array('sql_alter', "TABLE spip_syndic_articles CHANGE url url text DEFAULT '' NOT NULL"), 46 array('sql_alter', "TABLE spip_syndic_articles ADD INDEX url(url(255))") 44 47 ); 45 48 46 49 $maj['1.1.1'] = array( 47 array('maj_tables', array('spip_syndic_articles')),50 array('maj_tables', array('spip_syndic_articles')), 48 51 ); 49 52 -
_core_/plugins/sites/sites_autoriser.php
r93092 r93624 12 12 13 13 14 if (!defined('_ECRIRE_INC_VERSION')) return; 14 if (!defined('_ECRIRE_INC_VERSION')) { 15 return; 16 } 15 17 16 18 // fonction pour le pipeline 17 function sites_autoriser() { }19 function sites_autoriser() { } 18 20 19 21 20 22 // bouton du bandeau 21 function autoriser_sites_menu_dist($faire, $type = '', $id = 0, $qui = NULL, $opt = NULL){23 function autoriser_sites_menu_dist($faire, $type = '', $id = 0, $qui = null, $opt = null) { 22 24 return 23 25 autoriser('voir', '_sites', $id, $qui, $opt); 24 26 } 27 25 28 // Le bouton de création d'un site est présent si on peut en créer un. 26 function autoriser_sitecreer_menu_dist($faire, $type, $id, $qui, $opt) {29 function autoriser_sitecreer_menu_dist($faire, $type, $id, $qui, $opt) { 27 30 return 28 31 autoriser_site_creer_dist($faire, $type, $id, $qui, $opt); 29 32 } 30 33 31 function autoriser_sites_voir_dist($faire, $type = '', $id = 0, $qui = NULL, $opt = NULL){34 function autoriser_sites_voir_dist($faire, $type = '', $id = 0, $qui = null, $opt = null) { 32 35 return 33 36 ($GLOBALS['meta']['activer_sites'] != 'non'); … … 49 52 50 53 51 function autoriser_controlersyndication_menu_dist($faire, $type, $id, $qui, $opt) {52 return ($qui['statut']=='0minirezo' AND sql_countsel('spip_syndic_articles'));54 function autoriser_controlersyndication_menu_dist($faire, $type, $id, $qui, $opt) { 55 return ($qui['statut'] == '0minirezo' AND sql_countsel('spip_syndic_articles')); 53 56 } 54 57 55 58 // Creer un nouveau site ? 56 function autoriser_site_creer_dist($faire, $type, $id, $qui, $opt) {59 function autoriser_site_creer_dist($faire, $type, $id, $qui, $opt) { 57 60 return 58 61 ($GLOBALS['meta']["activer_sites"] != 'non' 59 AND verifier_table_non_vide()60 AND (61 $qui['statut']=='0minirezo'62 OR ($GLOBALS['meta']['proposer_sites'] >=63 ($qui['statut']=='1comite' ? 1 : 2))));62 AND verifier_table_non_vide() 63 AND ( 64 $qui['statut'] == '0minirezo' 65 OR ($GLOBALS['meta']['proposer_sites'] >= 66 ($qui['statut'] == '1comite' ? 1 : 2)))); 64 67 } 65 68 … … 71 74 return 72 75 $id 73 AND autoriser('voir', 'rubrique',$id)76 AND autoriser('voir', 'rubrique', $id) 74 77 AND autoriser_site_creer_dist($faire, $type, $id, $qui, $opt); 75 78 } … … 79 82 // http://code.spip.net/@autoriser_site_modifier_dist 80 83 function autoriser_site_modifier_dist($faire, $type, $id, $qui, $opt) { 81 if ($qui['statut'] == '0minirezo' AND !$qui['restreint']) 84 if ($qui['statut'] == '0minirezo' AND !$qui['restreint']) { 82 85 return true; 86 } 83 87 84 $r = sql_fetsel("id_rubrique,statut", "spip_syndic", "id_syndic=".intval($id)); 88 $r = sql_fetsel("id_rubrique,statut", "spip_syndic", "id_syndic=" . intval($id)); 89 85 90 return ($r 86 AND autoriser('voir', 'rubrique',$r['id_rubrique'])91 AND autoriser('voir', 'rubrique', $r['id_rubrique']) 87 92 AND 88 ($r['statut'] == 'publie' OR (isset($opt['statut']) AND $opt['statut'] =='publie'))93 ($r['statut'] == 'publie' OR (isset($opt['statut']) AND $opt['statut'] == 'publie')) 89 94 ? autoriser('publierdans', 'rubrique', $r['id_rubrique'], $qui, $opt) 90 95 : in_array($qui['statut'], array('0minirezo', '1comite')) 91 96 ); 92 97 } 98 93 99 // Autoriser a voir un site $id_syndic 94 100 // http://code.spip.net/@autoriser_site_voir_dist … … 109 115 verifier_table_non_vide('spip_syndic'); 110 116 } 117 111 118 ?> -
_core_/plugins/sites/sites_fonctions.php
r79783 r93624 15 15 * 16 16 * @package SPIP\Sites\Compilateur 17 **/ 18 if (!defined('_ECRIRE_INC_VERSION')) return; 17 **/ 18 if (!defined('_ECRIRE_INC_VERSION')) { 19 return; 20 } 19 21 20 22 /** … … 27 29 * @return string 28 30 * Code PHP compilé de la boucle 29 **/31 **/ 30 32 function boucle_SITES_dist($id_boucle, &$boucles) { 31 33 $boucle = &$boucles[$id_boucle]; 32 34 $boucle->type_requete = 'syndication'; // pas sur que ce soit indispensable 33 if (!function_exists($f ='boucle_SYNDICATION') AND !function_exists($f=$f.'_dist'))35 if (!function_exists($f = 'boucle_SYNDICATION') AND !function_exists($f = $f . '_dist')) { 34 36 $f = 'calculer_boucle'; 37 } 38 35 39 return $f($id_boucle, $boucles); 36 40 } -
_core_/plugins/sites/sites_ieconfig.php
r57805 r93624 1 1 <?php 2 2 3 if (!defined("_ECRIRE_INC_VERSION")) return; 3 if (!defined("_ECRIRE_INC_VERSION")) { 4 return; 5 } 4 6 5 function sites_ieconfig_metas($table) {7 function sites_ieconfig_metas($table) { 6 8 $table['sites']['titre'] = _T('sites:titre_referencement_sites'); 7 9 $table['sites']['icone'] = 'site-16.png'; 8 10 $table['sites']['metas_brutes'] = 'activer_sites,activer_syndic,proposer_sites,moderation_sites'; 9 11 10 12 return $table; 11 13 } -
_core_/plugins/sites/sites_pipelines.php
r93171 r93624 11 11 \***************************************************************************/ 12 12 13 if (!defined('_ECRIRE_INC_VERSION')) return; 14 15 /** 16 * Ajouter les sites et syndication a valider sur les rubriques 17 * 18 * @param array $flux 19 * @return array 20 */ 21 function sites_rubrique_encours($flux){ 13 if (!defined('_ECRIRE_INC_VERSION')) { 14 return; 15 } 16 17 /** 18 * Ajouter les sites et syndication a valider sur les rubriques 19 * 20 * @param array $flux 21 * @return array 22 */ 23 function sites_rubrique_encours($flux) { 22 24 if ($flux['args']['type'] == 'rubrique') { 23 $lister_objets = charger_fonction('lister_objets', 'inc');25 $lister_objets = charger_fonction('lister_objets', 'inc'); 24 26 25 27 $id_rubrique = $flux['args']['id_objet']; 26 28 27 29 // 28 30 // Les sites references a valider 29 31 // 30 32 if ($GLOBALS['meta']['activer_sites'] != 'non') { 31 $flux['data'] .= $lister_objets('sites',array('titre'=> _T('sites:info_site_valider') ,'statut'=>'prop','id_rubrique'=>$id_rubrique, 'par'=>'nom_site')); 33 $flux['data'] .= $lister_objets('sites', array( 34 'titre' => _T('sites:info_site_valider'), 35 'statut' => 'prop', 36 'id_rubrique' => $id_rubrique, 37 'par' => 'nom_site' 38 )); 32 39 } 33 40 … … 36 43 // 37 44 if ($GLOBALS['meta']['activer_sites'] != 'non' 38 AND autoriser('publierdans','rubrique',$id_rubrique)) { 39 $flux['data'] .= $lister_objets('sites',array('titre'=> _T('sites:avis_sites_syndiques_probleme') ,'statut'=>'publie', 'syndication'=>array('off','sus'),'id_rubrique'=>$id_rubrique, 'par'=>'nom_site')); 45 AND autoriser('publierdans', 'rubrique', $id_rubrique) 46 ) { 47 $flux['data'] .= $lister_objets('sites', array( 48 'titre' => _T('sites:avis_sites_syndiques_probleme'), 49 'statut' => 'publie', 50 'syndication' => array('off', 'sus'), 51 'id_rubrique' => $id_rubrique, 52 'par' => 'nom_site' 53 )); 40 54 } 41 55 42 56 // Les articles syndiques en attente de validation 43 57 if ($id_rubrique == 0 44 AND autoriser('publierdans','rubrique',$id_rubrique)) { 58 AND autoriser('publierdans', 'rubrique', $id_rubrique) 59 ) { 45 60 46 61 $cpt = sql_countsel("spip_syndic_articles", "statut='dispo'"); 47 if ($cpt) 62 if ($cpt) { 48 63 $flux['data'] .= "<br /><small><a href='" . 49 64 generer_url_ecrire("sites") . … … 55 70 _T('sites:info_liens_syndiques_2') . 56 71 "</a></small>"; 57 } 58 } 59 72 } 73 } 74 } 75 60 76 return $flux; 61 77 } … … 63 79 /** 64 80 * Configuration des contenus 65 * @param array $flux 66 * @return array 67 */ 68 function sites_affiche_milieu($flux){ 81 * 82 * @param array $flux 83 * @return array 84 */ 85 function sites_affiche_milieu($flux) { 69 86 if ($flux["args"]["exec"] == "configurer_contenu") { 70 $flux["data"] .= recuperer_fond('prive/squelettes/inclure/configurer',array('configurer'=>'configurer_sites')); 71 } 72 return $flux; 73 } 74 75 /** 76 * Ajouter les sites et syndication a valider sur la page d'accueil 77 * 78 * @param array $flux 79 * @return array 80 */ 81 function sites_accueil_encours($flux){ 82 $lister_objets = charger_fonction('lister_objets','inc'); 83 87 $flux["data"] .= recuperer_fond('prive/squelettes/inclure/configurer', array('configurer' => 'configurer_sites')); 88 } 89 90 return $flux; 91 } 92 93 /** 94 * Ajouter les sites et syndication a valider sur la page d'accueil 95 * 96 * @param array $flux 97 * @return array 98 */ 99 function sites_accueil_encours($flux) { 100 $lister_objets = charger_fonction('lister_objets', 'inc'); 101 84 102 // 85 103 // Les sites references a valider 86 104 // 87 105 if ($GLOBALS['meta']['activer_sites'] != 'non') { 88 $flux .= $lister_objets('sites',array('titre'=>afficher_plus_info(generer_url_ecrire('sites')). _T('sites:info_site_valider') ,'statut'=>'prop', 'par'=>'nom_site')); 106 $flux .= $lister_objets('sites', array( 107 'titre' => afficher_plus_info(generer_url_ecrire('sites')) . _T('sites:info_site_valider'), 108 'statut' => 'prop', 109 'par' => 'nom_site' 110 )); 89 111 } 90 112 … … 94 116 // 95 117 if ($GLOBALS['meta']['activer_sites'] != 'non') { 96 $flux .= $lister_objets('sites',array('titre'=>afficher_plus_info(generer_url_ecrire('sites')). _T('sites:avis_sites_syndiques_probleme') ,'statut'=>'publie', 'syndication'=>array('off','sus'), 'par'=>'nom_site')); 118 $flux .= $lister_objets('sites', array( 119 'titre' => afficher_plus_info(generer_url_ecrire('sites')) . _T('sites:avis_sites_syndiques_probleme'), 120 'statut' => 'publie', 121 'syndication' => array('off', 'sus'), 122 'par' => 'nom_site' 123 )); 97 124 } 98 125 99 126 // Les articles syndiques en attente de validation 100 127 $cpt = sql_countsel("spip_syndic_articles", "statut='dispo'"); 101 if ($cpt) 128 if ($cpt) { 102 129 $flux .= "\n<br /><small><a href='" 103 . generer_url_ecrire("sites","") 104 . "' style='color: black;'>" 105 . $cpt 106 . " " 107 . _T('sites:info_liens_syndiques_1') 108 . " " 109 . _T('sites:info_liens_syndiques_2') 110 . "</a></small>"; 111 112 } 130 . generer_url_ecrire("sites", "") 131 . "' style='color: black;'>" 132 . $cpt 133 . " " 134 . _T('sites:info_liens_syndiques_1') 135 . " " 136 . _T('sites:info_liens_syndiques_2') 137 . "</a></small>"; 138 } 139 140 } 141 113 142 return $flux; 114 143 } … … 123 152 function sites_affiche_enfants($flux) { 124 153 if (isset($flux['args']['exec']) 125 AND $e = trouver_objet_exec($flux['args']['exec']) 126 AND $e['type'] == 'rubrique' 127 AND $e['edition'] == false) { 154 AND $e = trouver_objet_exec($flux['args']['exec']) 155 AND $e['type'] == 'rubrique' 156 AND $e['edition'] == false 157 ) { 128 158 $id_rubrique = $flux['args']['id_rubrique']; 129 159 130 160 if ($GLOBALS['meta']["activer_sites"] == 'oui') { 131 $lister_objets = charger_fonction('lister_objets', 'inc');161 $lister_objets = charger_fonction('lister_objets', 'inc'); 132 162 $bouton_sites = ''; 133 if (autoriser('creersitedans','rubrique',$id_rubrique)) { 134 $bouton_sites .= icone_verticale(_T('sites:info_sites_referencer'), generer_url_ecrire('site_edit', "id_rubrique=$id_rubrique"), "site-24.png", "new", 'right') 163 if (autoriser('creersitedans', 'rubrique', $id_rubrique)) { 164 $bouton_sites .= icone_verticale(_T('sites:info_sites_referencer'), 165 generer_url_ecrire('site_edit', "id_rubrique=$id_rubrique"), "site-24.png", "new", 'right') 135 166 . "<br class='nettoyeur' />"; 136 167 } 137 138 $flux['data'] .= $lister_objets('sites',array('titre'=>_T('sites:titre_sites_references_rubrique') ,'where'=>"statut!='refuse' AND statut != 'prop' AND syndication NOT IN ('off','sus')", 'id_rubrique'=>$id_rubrique,'par'=>'nom_site')); 168 169 $flux['data'] .= $lister_objets('sites', array( 170 'titre' => _T('sites:titre_sites_references_rubrique'), 171 'where' => "statut!='refuse' AND statut != 'prop' AND syndication NOT IN ('off','sus')", 172 'id_rubrique' => $id_rubrique, 173 'par' => 'nom_site' 174 )); 139 175 $flux['data'] .= $bouton_sites; 140 176 } 141 177 } 142 return $flux; 143 } 144 178 179 return $flux; 180 } 145 181 146 182 … … 151 187 * @return array 152 188 */ 153 function sites_configurer_liste_metas($metas) {154 $metas['activer_sites'] 155 $metas['proposer_sites'] 156 $metas['activer_syndic'] 189 function sites_configurer_liste_metas($metas) { 190 $metas['activer_sites'] = 'non'; 191 $metas['proposer_sites'] = 0; 192 $metas['activer_syndic'] = 'oui'; 157 193 $metas['moderation_sites'] = 'non'; 194 158 195 return $metas; 159 196 } 160 197 161 198 /** 162 * Taches periodiques de syndication 199 * Taches periodiques de syndication 163 200 * 164 201 * @param array $taches_generales 165 202 * @return array 166 203 */ 167 function sites_taches_generales_cron($taches_generales) {204 function sites_taches_generales_cron($taches_generales) { 168 205 169 206 if (isset($GLOBALS['meta']["activer_syndic"]) 170 AND $GLOBALS['meta']["activer_syndic"] == "oui" 171 AND isset($GLOBALS['meta']["activer_sites"]) 172 AND $GLOBALS['meta']["activer_sites"] == "oui") { 173 $taches_generales['syndic'] = 90; 207 AND $GLOBALS['meta']["activer_syndic"] == "oui" 208 AND isset($GLOBALS['meta']["activer_sites"]) 209 AND $GLOBALS['meta']["activer_sites"] == "oui" 210 ) { 211 $taches_generales['syndic'] = 90; 174 212 } 175 213 … … 184 222 * @return array 185 223 */ 186 function sites_optimiser_base_disparus($flux) {224 function sites_optimiser_base_disparus($flux) { 187 225 $n = &$flux['data']; 188 226 $mydate = $flux['args']['date']; 189 227 190 sql_delete("spip_syndic", "maj<" .sql_quote($mydate)." AND statut=".sql_quote("refuse"));228 sql_delete("spip_syndic", "maj<" . sql_quote($mydate) . " AND statut=" . sql_quote("refuse")); 191 229 192 230 # les articles syndiques appartenant a des sites effaces 193 231 $res = sql_select("S.id_syndic AS id", 194 232 "spip_syndic_articles AS S 195 233 LEFT JOIN spip_syndic AS syndic 196 234 ON S.id_syndic=syndic.id_syndic", 197 198 199 $n += optimiser_sansref('spip_syndic_articles', 'id_syndic', $res);200 235 "syndic.id_syndic IS NULL"); 236 237 $n += optimiser_sansref('spip_syndic_articles', 'id_syndic', $res); 238 201 239 202 240 return $flux; … … 207 245 /** 208 246 * Publier et dater les rubriques qui ont un site publie 209 * 247 * 210 248 * @param array $flux 211 249 * @return array 212 250 */ 213 251 function sites_calculer_rubriques($flux) { 214 252 215 253 $r = sql_select( 216 254 "R.id_rubrique AS id, max(A.date) AS date_h", 217 255 "spip_rubriques AS R JOIN spip_syndic AS A ON R.id_rubrique = A.id_rubrique", 218 256 "A.date>R.date_tmp AND A.statut='publie' ", "R.id_rubrique"); 219 while ($row = sql_fetch($r)) 220 sql_updateq('spip_rubriques', array('statut_tmp'=>'publie', 'date_tmp'=>$row['date_h']),"id_rubrique=".$row['id']); 257 while ($row = sql_fetch($r)) { 258 sql_updateq('spip_rubriques', array('statut_tmp' => 'publie', 'date_tmp' => $row['date_h']), 259 "id_rubrique=" . $row['id']); 260 } 221 261 222 262 return $flux; … … 225 265 /** 226 266 * Compter les sites dans une rubrique 227 * 228 * @param array $flux 229 * @return array 230 */ 231 function sites_objet_compte_enfants($flux){ 232 if ($flux['args']['objet']=='rubrique' 233 AND $id_rubrique=intval($flux['args']['id_objet'])) { 267 * 268 * @param array $flux 269 * @return array 270 */ 271 function sites_objet_compte_enfants($flux) { 272 if ($flux['args']['objet'] == 'rubrique' 273 AND $id_rubrique = intval($flux['args']['id_objet']) 274 ) { 234 275 // juste les publies ? 235 276 if (array_key_exists('statut', $flux['args']) and ($flux['args']['statut'] == 'publie')) { 236 $flux['data']['site'] = sql_countsel('spip_syndic', "id_rubrique=".intval($id_rubrique)." AND (statut='publie')"); 277 $flux['data']['site'] = sql_countsel('spip_syndic', 278 "id_rubrique=" . intval($id_rubrique) . " AND (statut='publie')"); 237 279 } else { 238 $flux['data']['site'] = sql_countsel('spip_syndic', "id_rubrique=".intval($id_rubrique)." AND (statut='publie' OR statut='prop')"); 239 } 240 } 241 return $flux; 242 } 243 244 245 function sites_trig_propager_les_secteurs($flux){ 280 $flux['data']['site'] = sql_countsel('spip_syndic', 281 "id_rubrique=" . intval($id_rubrique) . " AND (statut='publie' OR statut='prop')"); 282 } 283 } 284 285 return $flux; 286 } 287 288 289 function sites_trig_propager_les_secteurs($flux) { 246 290 // reparer les sites 247 $r = sql_select("A.id_syndic AS id, R.id_secteur AS secteur", "spip_syndic AS A, spip_rubriques AS R", "A.id_rubrique = R.id_rubrique AND A.id_secteur <> R.id_secteur"); 248 while ($row = sql_fetch($r)) 249 sql_update("spip_syndic", array("id_secteur" => $row['secteur']), "id_syndic=".$row['id']); 291 $r = sql_select("A.id_syndic AS id, R.id_secteur AS secteur", "spip_syndic AS A, spip_rubriques AS R", 292 "A.id_rubrique = R.id_rubrique AND A.id_secteur <> R.id_secteur"); 293 while ($row = sql_fetch($r)) { 294 sql_update("spip_syndic", array("id_secteur" => $row['secteur']), "id_syndic=" . $row['id']); 295 } 250 296 251 297 return $flux; … … 258 304 * @return array 259 305 */ 260 function sites_boite_infos($flux){ 261 if ($flux['args']['type']=='rubrique' 262 AND $id_rubrique = $flux['args']['id']){ 263 if ($nb = sql_countsel('spip_syndic',"statut='publie' AND id_rubrique=".intval($id_rubrique))){ 264 $nb = "<div>". singulier_ou_pluriel($nb, "sites:info_1_site", "sites:info_nb_sites") . "</div>"; 265 if ($p = strpos($flux['data'],"<!--nb_elements-->")) 266 $flux['data'] = substr_replace($flux['data'],$nb,$p,0); 267 } 268 } 306 function sites_boite_infos($flux) { 307 if ($flux['args']['type'] == 'rubrique' 308 AND $id_rubrique = $flux['args']['id'] 309 ) { 310 if ($nb = sql_countsel('spip_syndic', "statut='publie' AND id_rubrique=" . intval($id_rubrique))) { 311 $nb = "<div>" . singulier_ou_pluriel($nb, "sites:info_1_site", "sites:info_nb_sites") . "</div>"; 312 if ($p = strpos($flux['data'], "<!--nb_elements-->")) { 313 $flux['data'] = substr_replace($flux['data'], $nb, $p, 0); 314 } 315 } 316 } 317 269 318 return $flux; 270 319 }
Note: See TracChangeset
for help on using the changeset viewer.