function traiter_ressources($r) { $html = null; if ($ressource = charger_fonction('ressource', 'inc', true)) { $html = $ressource($r[0]); } if (is_null($html)) { include_spip('inc/lien'); $url = explode(' ', trim($r[0], '<>')); $url = $url[0]; # <http://url/absolue> if (preg_match(',^https?://,i', $url)) { $html = PtoBR(propre("<span class='ressource spip_out'><[->" . $url . "]></span>")); } else { if (false !== strpos($url, '/')) { $html = PtoBR(propre("<span class='ressource spip_in'><[->" . $url . "]></span>")); } else { preg_match(',\\.([^.]+)$,', $url, $regs); if (file_exists($f = _DIR_IMG . $regs[1] . '/' . $url)) { $html = PtoBR(propre("<span class='ressource spip_in'><[" . $url . "->" . $f . "]></span>")); } else { $html = PtoBR(propre("<span class='ressource'><" . $url . "></span>")); } } } } return '<html>' . $html . '</html>'; }
function cs_introduction($texte, $descriptif, $lgr, $id, $racc, $connect) { @define('_INTRODUCTION_LGR', 100); // fonction couper_intro $couper = $GLOBALS['cs_couper_intro']; if (strlen($descriptif)) # si descriptif contient juste des espaces ca produit une intro vide, # c'est une fonctionnalite, pas un bug // ici le descriptif est coupe s'il est trop long $texte = $lgr<0?propre($couper($descriptif, -$lgr, _INTRODUCTION_CODE)):propre($descriptif); else { // pas de maths dans l'intro... $texte = preg_replace(',<math>.*</math>,imsU', '', $texte); // on coupe proprement... $lgr = $lgr>0?round($lgr*_INTRODUCTION_LGR/100):-$lgr; $texte = PtoBR(propre(supprimer_tags($couper(cs_introduire($texte), $lgr, _INTRODUCTION_CODE)))); } // si les points de suite ont ete ajoutes return remplace_points_de_suite($texte, $id, $racc); } // introduction()
function legender_corps($ancre, $flag, $id, $id_document, $script, $type, $document, $label, $taille) { include_spip('inc/editer'); $contenu = ''; $descriptif = $document['descriptif']; if ($descriptif) $contenu .= "<p>".PtoBR(lignes_longues(propre($descriptif),25)) . "</p>\n"; if ($document['largeur'] OR $document['hauteur']) $contenu .= _T('info_largeur_vignette', array('largeur_vignette' => $document['largeur'], 'hauteur_vignette' => $document['hauteur'])) . ' — '; $contenu .= taille_en_octets($document['taille']); $date = $document['date']; if ($date AND ($GLOBALS['meta']["documents_date"] == 'oui')) $contenu .= "<br />\n" . affdate($date); $corps = (!$contenu ? '' : "<div class='verdana1' style='text-align: center; margin-bottom: 10px;'>$contenu</div>") . "<div class='formulaire_spip formulaire_spip_compact'><ul><li class='editer_titre'><label for='titre_document$id_document'>$label</label>\n" . "<input type='text' name='titre_document' id='titre_document$id_document' class='text' value=\"".entites_html($document['titre']). "\" size='40' onfocus=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block');\" /></li>\n" . (($GLOBALS['meta']["documents_date"] == 'oui') ? "<li class='editer_date'>".date_formulaire_legender($date, $id_document)."</li>" :'' ) . "<li class='editer_descriptif'><label for='descriptif_document$id_document'>". _T('info_description_2'). "</label>\n" . "<textarea name='descriptif_document' id='descriptif_document$id_document' rows='4' class='textarea' cols='*' onfocus=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block');\">" . entites_html($descriptif) . "</textarea></li></ul></div>\n" . $taille .controles_md5($document); $att_bouton = ""; $att_span = " id='valider_doc$id_document' " . ($flag == 'ajax' ? '' : "class='display_au_chargement'") . " style='text-align:" . $GLOBALS['spip_lang_right'] . ($flag == 'ajax' ? ';display:block' : "") . "'"; if (test_espace_prive()) return ajax_action_post("legender", $id_document, $script, "show_docs=$id_document&id_$type=$id#legender-$id_document", $corps, _T('bouton_enregistrer'), $att_bouton, $att_span, "&id_document=$id_document&id=$id&type=$type&ancre=$ancre") . "<div class='nettoyeur'></div>"; else { $corps = "<div class='boutons'>" . $corps . "<span" . $att_span . "><input type='submit' value='" . _T('bouton_enregistrer') ."' /></span></div>"; $redirect = parametre_url($script,'show_docs',$id_document,'&'); $redirect = parametre_url($redirect,"id_$type",$id,'&'); $redirect = parametre_url($redirect,"id_$type",$id,'&'); $redirect = ancre_url($redirect,"legender-$id_document"); return generer_action_auteur("legender", $id_document, $redirect, $corps, "\nmethod='post'"); } }
/** * Retourne un texte HTML présentant les crédits d'un plugin * * Des liens vers les crédits sont présents lorsqu'ils sont déclarés * dans le paquet.xml. * * @param string $balise_serialisee * Informations des crédits (tableau sérialisé) tel que stocké * en base dans la table spip_paquets * @param string $sep * Séparateur entre les différents crédits * @return string * Texte informant des crédits **/ function svp_afficher_credits($balise_serialisee, $sep = ', ') { $texte = ''; $credits = unserialize($balise_serialisee); if (is_array($credits)) { foreach ($credits as $_credit) { if ($texte) { $texte .= $sep; } // Si le credit en cours n'est pas un array c'est donc un copyright $texte .= !is_array($_credit) ? PtoBR(propre($_credit)) : ($_credit['url'] ? '<a href="' . $_credit['url'] . '">' : '') . $_credit['nom'] . ($_credit['url'] ? '</a>' : ''); } } return $texte; }
function formater_credits($infos, $sep = ', ') { $texte = ''; foreach ($infos as $_credit) { if ($texte) { $texte .= $sep; } // Si le credit en cours n'est pas un array c'est donc un copyright $texte .= !is_array($_credit) ? PtoBR(propre($_credit)) : ($_credit['url'] ? '<a href="' . $_credit['url'] . '">' : '') . $_credit['nom'] . ($_credit['url'] ? '</a>' : ''); } return $texte; }
function http_calendrier_avec_heure($evenement, $amj) { $jour_debut = substr($evenement['DTSTART'], 0,8); $jour_fin = substr($evenement['DTEND'], 0, 8); if ($jour_fin <= 0) $jour_fin = $jour_debut; if (($jour_debut <= 0) OR ($jour_debut > $amj) OR ($jour_fin < $amj)) return ""; $desc = PtoBR(propre($evenement['DESCRIPTION'])); $sum = $evenement['SUMMARY']; $u = $GLOBALS['meta']['pcre_u']; $sum = typo($sum); if (!$sum) $sum = $desc; if ($lieu = $evenement['LOCATION']) $sum .= '<br />' . $lieu; if ($perso = construire_personne_ics($evenement['ATTENDEE'])) $sum .= '<br />' . $perso; if ($evenement['URL']) $sum = http_href(quote_amp($evenement['URL']), $sum, attribut_html($desc), 'border: 0'); $sum = pipeline('agenda_rendu_evenement',array('args'=>array('evenement'=>$evenement,'type'=>'avec_heure'),'data'=>$sum)); $deb_h = substr($evenement['DTSTART'],-6,2); $deb_m = substr($evenement['DTSTART'],-4,2); $fin_h = substr($evenement['DTEND'],-6,2); $fin_m = substr($evenement['DTEND'],-4,2); $opacity = $evenement['CATEGORIES']; if ($amj != $jour_debut AND $amj != $jour_fin) { $opacity .= ' calendrier-opacity'; } else { if ($deb_h >0 OR $deb_m > 0) { if ((($deb_h > 0) OR ($deb_m > 0)) AND $amj == $jour_debut) { $deb = $deb_h . ':' . $deb_m;} else { $deb = '...'; } if ((($fin_h > 0) OR ($fin_m > 0)) AND $amj == $jour_fin) { $fin = $fin_h . ':' . $fin_m;} else { $fin = '...'; } $sum = "<div style='font-weight: bold;'>$deb-$fin</div>$sum"; } } return "\n<div class='calendrier-arial10 calendrier-evenement $opacity'>$sum\n</div>\n"; }
/** * Compte le nombre de caracteres d'une chaine, * mais en supprimant tous les liens * (qu'ils soient ou non ecrits en raccourcis SPIP) * ainsi que tous les espaces en trop * * @param string $texte * texte d'entree * @param bool $propre * passer le texte dans propre ou non * @return int * compte du texte nettoye */ function compter_caracteres_utiles($texte, $propre = true) { include_spip('inc/charsets'); if ($propre) { $texte = propre($texte); } $u = $GLOBALS['meta']['pcre_u']; // regarder si il y a du contenu en dehors des liens ! $texte = PtoBR($texte); $texte = preg_replace(",<a.*</a>,{$u}Uims", '', $texte); // \W matche tous les caracteres non ascii apres 0x80 // et vide donc les chaines constitues de caracteres unicodes uniquement // on remplace par un match qui elimine uniquement // les non \w et les non unicodes $texte = trim(preg_replace(",[^\\w€-ÿ]+,ims", ' ', $texte)); // on utilise spip_strlen pour compter la longueur correcte // pour les chaines unicodes return spip_strlen($texte); }
function afficher_liste_listes_plugins() { if (!is_array($flux = @unserialize($GLOBALS['meta']['syndic_plug']))) return ''; if (count($flux)){ $ret = '<h3>'._T('plugin_info_automatique_liste').'</h3><ul class="liste-items">'; //$ret .= '<li>'._T('plugin_info_automatique_liste_officielle').'</li>'; foreach ($flux as $url => $c) { $a = '<div class="actions">[<a href="'.parametre_url( generer_action_auteur('charger_plugin', 'supprimer_flux'),'supprimer_flux', $url).'">'._T('lien_supprimer').'</a>]</div>'; $time = @filemtime(_DIR_TMP.'syndic_plug_'.md5($url).'.txt'); $ret .= '<li class="item">'.inserer_attribut(PtoBR(propre("[->$url]")),'title',$url).' ('._T('plugins_compte',array('count' => $c)).') ' .($time?"<div class='small'>" . _T('info_derniere_syndication').' '.affdate(date('Y-m-d H:i:s',$time)) ."</div>":'') . $a .'</li>'; } $ret .= '</ul>'; $ret .= '<div style="text-align:'.$GLOBALS['spip_lang_right'].'"><a href="'.parametre_url( generer_action_auteur('charger_plugin', 'update_flux'),'update_flux', 'oui').'">'._T('plugin_info_automatique_liste_update').'</a></div>'; } return $ret; }