function debut_admin($script, $action = '', $corps = '') { if (!$action || !(autoriser('webmestre') or autoriser('chargerftp'))) { include_spip('inc/minipres'); return minipres(); } else { $dir = dir_admin(); $signal = fichier_admin($script); if (@file_exists($dir . $signal)) { spip_log("Action admin: {$action}"); return ''; } include_spip('inc/minipres'); // Si on est un super-admin, un bouton de validation suffit // sauf dans les cas destroy if ((autoriser('webmestre') or $script === 'repair') and $script != 'delete_all') { if (_request('validation_admin') == $signal) { spip_log("Action super-admin: {$action}"); return ''; } $corps .= '<input type="hidden" name="validation_admin" value="' . $signal . '" />'; $suivant = _T('bouton_valider'); $js = ''; } else { // cet appel permet d'assurer un copier-coller du nom du repertoire a creer dans tmp (esj) // l'insertion du script a cet endroit n'est pas xhtml licite mais evite de l'embarquer dans toutes les pages minipres $corps .= http_script('', "spip_barre.js"); $corps .= "<fieldset><legend>" . _T('info_authentification_ftp') . aide("ftp_auth") . "</legend>\n<label for='fichier'>" . _T('info_creer_repertoire') . "</label>\n" . "<span id='signal' class='formo'>" . $signal . "</span>" . "<input type='hidden' id='fichier' name='fichier' value='" . $signal . "' />" . _T('info_creer_repertoire_2', array('repertoire' => joli_repertoire($dir))) . "</fieldset>"; $suivant = _T('bouton_recharger_page'); // code volontairement tordu: // provoquer la copie dans le presse papier du nom du repertoire // en remettant a vide le champ pour que ca marche aussi en cas // de JavaScript inactif. $js = " onload='var range=document.createRange(); var signal = document.getElementById(\"signal\"); var userSelection = window.getSelection(); range.setStart(signal,0); range.setEnd(signal,1); userSelection.addRange(range);'"; } // admin/xxx correspond // a exec/base_xxx de preference // et exec/xxx sinon (compat) if (tester_url_ecrire("base_{$script}")) { $script = "base_{$script}"; } $form = copy_request($script, $corps, $suivant); $info_action = _T('info_action', array('action' => "{$action}")); return minipres($info_action, $form, $js); } }
// si le cookie n'est pas pose correctement dans l'action if (!$var_auth AND isset($_COOKIE['spip_lang_ecrire']) AND $_COOKIE['spip_lang_ecrire'] <> $GLOBALS['visiteur_session']['lang']) { include_spip('action/converser'); action_converser_post($GLOBALS['visiteur_session']['lang'],true); } // Passer la main aux outils XML a la demande (meme les redac s'ils veulent). // mais seulement si on a bien ete auhentifie if ($var_f = _request('transformer_xml')) { set_request('var_url', $exec); $exec = $var_f; } if ($var_f = tester_url_ecrire($exec)) { $var_f = charger_fonction ($var_f); $var_f(); // at last } else { // Rien de connu: rerouter vers exec=404 au lieu d'echouer // ce qui permet de laisser la main a un plugin $var_f = charger_fonction('404'); $var_f($exec); } $debug = ((_request('var_mode') == 'debug') OR !empty($tableau_des_temps)) ? array(1) : array(); if ($debug) { $var_mode_affiche = _request('var_mode_affiche'); $GLOBALS['debug_objets'][$var_mode_affiche][$var_mode_objet . 'tout'] = ($var_mode_affiche== 'validation' ? $page['texte'] :""); echo erreur_squelette();
function valider_xml_ok($url, $req_ext, $limit, $rec) { $url = urldecode(trim($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); $mode = (($ext === 'html') AND substr_count($dir, '/') <= 1); list($err, $terr, $res) = valider_resultats($res, $mode); $err = '<br /><h2>' . $terr . " " . _T('erreur_texte') . " ($err/" . count($files) .')</h2>'; $res = $err . $res; } else { $res = _T('texte_vide'); $err = ''; } $bandeau = $dir . '*' . $ext ; } 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)) { if (($dir=='exec') AND (tester_url_ecrire($url) == 'fond')) { include_spip('exec/fond'); $args = array($url, array()); $url = 'fond_args'; } $res = valider_script($transformer_xml, $script, $dir, $ext, $args); $url_aff = $res[3]; } else { $res = $transformer_xml(recuperer_page($url)); $url_aff = entites_html($url); } if ($res[1]) { list($texte, $err) = emboite_texte($res); } else { $err = '<h3>' . _T('spip_conforme_dtd') . '</h3>x'; list($texte, ) = emboite_texte($res); } $res = "<div style='text-align: center'>" . $err . "</div>" . "<div style='margin: 10px; text-align: left'>" . $texte . '</div>'; $bandeau = "<a href='$url_aff'>$url</a>"; } } $titre .= ' ' . $url_aff; $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(); }