You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

94 lines
2.5 KiB

<?php
// Retire les liens en syntaxe Trac: [URL titre] ---> titre
function tracbrut($texte) {
if (preg_match_all('/[[][^ ]* *([^]]*)]/', $texte, $m, PREG_SET_ORDER)) {
foreach ($m as $r) {
$texte = str_replace($r[0], $r[1], $texte);
}
}
return $texte ? $texte : 'Log';
}
function balise_ID_RUBRIQUE_CARNET_dist($p) {
static $id = null;
if (is_null($id)) {
include_spip('inc/config');
$id = lire_config('gribouille/secteur_wiki', 0);
if (!$id) {
$ids = lire_config('autorite/espace_wiki');
if ($ids) {
$id = reset($ids);
}
}
}
$p->code = "$id";
return $p;
}
function critere_contrib_recherche_fulltext_dist($idb, &$boucles, $crit) {
// sur contrib, la recherche sur le titre des forums est pas pertinente
return critere_recherche_fulltext_dist($idb,$boucles, $crit, ['forum' => ['titre']]);
}
/**
* Reçois une url
* retourne l'article associé à cette url
* soit l'article directement si c'est une url d'article
* soir l'article d'accueil de la rubrique si c'est une url de rubrique
* @param $url string
* @return array les id_articles
**/
function get_articles_from_url($url){
static $cache = array();
if (isset($cache[$url])) {
return $cache[$url];
}
if (preg_match(",^http://(?:www\.|spip-)?(?:spip-)?contrib(?:\.spip)?\.net/(\d+)$,",$url,$m)){
return $cache[$url] = intval($m[1]);
}
$url = str_replace('https://contrib.spip.net/','', $url);//permet de faire les tests sur des instances local ayant une autre url de base
//Est-ce une url raccourcis avec juste le numéro d'article? si oui urls_decoder_url est pas capable de décoder
if (preg_match("#^([0-9]+)$#", $url, $m)) {
$fond = 'article';
$contexte['id_article'] = $m[1];
}
else {
list($fond,$contexte,$url_redirect) = urls_decoder_url($url);
}
if ($fond=='rubrique' AND $id_rubrique=$contexte['id_rubrique']){
$id_article = sql_getfetsel('id_article_accueil','spip_rubriques','id_rubrique='.intval($id_rubrique));
return $cache[$url] = $id_article;
}
if ($fond!=="article") {
return $cache[$url]=false;
}
if (!isset($contexte['id_article'])) {
return $cache[$url]=false;
}
return $cache[$url] = $contexte['id_article'];
}
/**
* A partir de l'url de la source, renvoie l'url de gestionnaire de ticket
* @param string $url
* @return string|null
**/
function get_tickets_from_source($url) {
if (strpos($url, 'http') === false) {
return null;
}
// Supprimer le .git éventuel à la fin de l'url
$url = preg_replace('#\.git$#', '', $url);
// Et ajouter /issues, cela marche pour gitlab, gitea, github
$url = "$url/issues";
return $url;
}