/** * Vérifie le formatage d'un xml * * @see valider_resultats() * @see valider_dir() * @see valider_pseudo_url() * * @param string $url * @param string $req_ext * @param int $limit * @param array|bool $rec * **/ function valider_xml_ok($url, $req_ext, $limit, $rec) { $url = urldecode($url); $rec = !$rec ? false : array(); if (!$limit) { $limit = 200; } $titre = _T('analyse_xml'); if (!$url) { $url_aff = 'http://'; $onfocus = "this.value='';"; $texte = $bandeau = $err = ''; } else { include_spip('inc/distant'); if (is_dir($url)) { $dir = substr($url, -1, 1) === '/' ? $url : "{$url}/"; $ext = !preg_match('/^[.*\\w]+$/', $req_ext) ? 'php' : $req_ext; $files = preg_files($dir, "{$ext}\$", $limit, $rec); if (!$files and $ext !== 'html') { $files = preg_files($dir, 'html$', $limit, $rec); if ($files) { $ext = 'html'; } } if ($files) { $res = valider_dir($files, $ext, $url); list($err, $res) = valider_resultats($res, $ext === 'html'); $err = ' (' . $err . '/' . count($files) . ')'; } else { $res = _T('texte_vide'); $err = ''; } $bandeau = $dir . '*' . $ext . $err; } else { if (preg_match('@^((?:[.]/)?[^?]*)[?]([0-9a-z_]+)=([^&]*)(.*)$@', $url, $r)) { list(, $server, $dir, $script, $args) = $r; if ((!$server or $server == './' or strpos($server, url_de_base()) === 0) and is_dir($dir)) { $url = $script; // Pour quand le validateur saura simuler // une query-string... // $args = preg_split('/&(amp;)?[a-z0-9_]+=/', $args); $args = true; } } else { $dir = 'exec'; $script = $url; $args = true; } $transformer_xml = charger_fonction('valider', 'xml'); $onfocus = "this.value='" . addslashes($url) . "';"; if (preg_match(',^[a-z][0-9a-z_]*$,i', $url)) { $res = $transformer_xml(charger_fonction($url, $dir), $args); $url_aff = valider_pseudo_url($dir, $script); } else { $res = $transformer_xml(recuperer_page($url)); $url_aff = entites_html($url); } list($texte, $err) = emboite_texte($res); if (!$err) { $err = '<h3>' . _T('spip_conforme_dtd') . '</h3>'; } $res = "<div style='text-align: center'>" . $err . "</div>" . "<div style='margin: 10px; text-align: left'>" . $texte . '</div>'; $bandeau = "<a href='{$url_aff}'>{$url}</a>"; } } $commencer_page = charger_fonction('commencer_page', 'inc'); $debut = $commencer_page($titre); $jq = http_script("", 'jquery.js'); echo str_replace('<head>', "<head>{$jq}", $debut); $onfocus = '<input type="text" size="70" value="' . $url_aff . '" name="var_url" id="var_url" onfocus="' . $onfocus . '" />'; $onfocus = generer_form_ecrire('valider_xml', $onfocus, " method='get'"); echo "<h1>", $titre, '<br>', $bandeau, '</h1>', "<div style='text-align: center'>", $onfocus, "</div>", $res, fin_page(); }
function debusquer_squelette ($fonc, $mode, $self) { global $debug_objets; if ($mode !== 'validation') { if ($debug_objets['sourcefile']) { $res = "<div id='spip-boucles'>\n" . debusquer_navigation_squelettes($self) . "</div>"; } else $res = ''; if ($fonc) { $id = " id='$fonc'"; if (!empty($GLOBALS['debug_objets'][$mode][$fonc])) { list($legend, $texte, $res2) = debusquer_source($fonc, $mode); $texte .= $res2; } elseif (!empty($debug_objets[$mode][$fonc . 'tout'])) { $legend = _T('zbug_' . $mode); $texte = $debug_objets[$mode][$fonc . 'tout']; $texte = ancre_texte($texte, array('','')); } } else return strlen(trim($res)) ? "<div id='spip-debug'>$res</div>" // cas de l'appel sur erreur: montre la page : $GLOBALS['debug_objets']['resultat']['tout']; } else { $valider = charger_fonction('valider', 'xml'); $val = $valider($debug_objets['validation'][$fonc . 'tout']); // Si erreur, signaler leur nombre dans le formulaire admin $debug_objets['validation'] = $val[1] ? count($val[1]):''; list($texte, $err) = emboite_texte($val, $fonc, $self); if ($err === false) $err = _T('impossible'); elseif ($err === true) $err = _T('correcte'); else $err = ": $err"; $legend = _T('validation') . ' ' . $err; $res = $id = ''; } return !trim($texte) ? '' : ( "<div id='spip-debug'>$res" . "<div id='debug_boucle'><fieldset$id><legend>" . $legend . "</legend>" . $texte . "</fieldset></div>" . "</div>"); }
function debusquer_squelette($fonc, $mode, $self) { global $debug_objets; if ($mode !== 'validation') { if (isset($debug_objets['sourcefile']) and $debug_objets['sourcefile']) { $res = "<div id='spip-boucles'>\n" . debusquer_navigation_squelettes($self) . "</div>"; } else { $res = ''; } if ($fonc) { $id = " id='{$fonc}'"; if (!empty($GLOBALS['debug_objets'][$mode][$fonc])) { list($legend, $texte, $res2) = debusquer_source($fonc, $mode); $texte .= $res2; } elseif (!empty($debug_objets[$mode][$fonc . 'tout'])) { $legend = _T('zbug_' . $mode); $texte = $debug_objets[$mode][$fonc . 'tout']; $texte = ancre_texte($texte, array('', '')); } } else { if (strlen(trim($res))) { return "<img src='" . chemin_image('compat-16.png') . "' alt='afficher-masquer le debug' id='spip-debug-toggle' onclick=\"var x = document.getElementById('spip-debug'); (x.style.display == '' ? x.style.display = 'none' : x.style.display = '');\" /><div id='spip-debug'>{$res}</div>"; } else { // cas de l'appel sur erreur: montre la page return isset($GLOBALS['debug_objets']['resultat']['tout']) ? $GLOBALS['debug_objets']['resultat']['tout'] : ''; } } } else { $valider = charger_fonction('valider', 'xml'); $val = $valider($debug_objets['validation'][$fonc . 'tout']); // Si erreur, signaler leur nombre dans le formulaire admin $debug_objets['validation'] = $val->err ? count($val->err) : ''; list($texte, $err) = emboite_texte($val, $fonc, $self); if ($err === false) { $err = _T('impossible'); } elseif ($err === true) { $err = _T('correcte'); } else { $err = ": {$err}"; } $legend = _T('validation') . ' ' . $err; $res = $id = ''; } return !trim($texte) ? '' : "<img src='" . chemin_image('compat-16.png') . "' alt='afficher-masquer le debug' id='spip-debug-toggle' onclick=\"var x = document.getElementById('spip-debug'); (x.style.display == '' ? x.style.display = 'none' : x.style.display = '');\" /><div id='spip-debug'>{$res}" . "<div id='debug_boucle'><fieldset{$id}><legend>" . "<a href='" . $self . "#f_" . substr($fonc, 0, 37) . "'> ↑ " . ($legend ? $legend : $mode) . "</a></legend>" . $texte . "</fieldset></div>" . "</div>"; }
function debusquer_squelette($fonc, $mode, $self) { global $debug_objets; if ($mode !== 'validation') { if (isset($debug_objets['sourcefile']) and $debug_objets['sourcefile']) { $res = "<div id='spip-boucles'>\n" . debusquer_navigation_squelettes($self) . "</div>"; } else { $res = ''; } if ($fonc) { $id = " id='{$fonc}'"; if (!empty($GLOBALS['debug_objets'][$mode][$fonc])) { list($legend, $texte, $res2) = debusquer_source($fonc, $mode); $texte .= $res2; } elseif (!empty($debug_objets[$mode][$fonc . 'tout'])) { $legend = _T('zbug_' . $mode); $texte = $debug_objets[$mode][$fonc . 'tout']; $texte = ancre_texte($texte, array('', '')); } } else { return strlen(trim($res)) ? "<div id='spip-debug'>{$res}</div>" : $GLOBALS['debug_objets']['resultat']['tout']; } } else { $valider = charger_fonction('valider', 'xml'); $val = $valider($debug_objets['validation'][$fonc . 'tout']); // Si erreur, signaler leur nombre dans le formulaire admin $debug_objets['validation'] = $val->err ? count($val->err) : ''; list($texte, $err) = emboite_texte($val, $fonc, $self); if ($err === false) { $err = _T('impossible'); } elseif ($err === true) { $err = _T('correcte'); } else { $err = ": {$err}"; } $legend = _T('validation') . ' ' . $err; $res = $id = ''; } return !trim($texte) ? '' : "<div id='spip-debug'>{$res}" . "<div id='debug_boucle'><fieldset{$id}><legend>" . "<a href='" . $self . "#f_" . substr($fonc, 0, 37) . "'> ↑ " . ($legend ? $legend : $mode) . "</a></legend>" . $texte . "</fieldset></div>" . "</div>"; }