uawdijnntqw1x1x1
IP : 216.73.216.168
Hostname : webm002.cluster111.gra.hosting.ovh.net
Kernel : Linux webm002.cluster111.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
OS : Linux
PATH:
/
home
/
atelierpru
/
provence
/
6bf95
/
..
/
tmp
/
..
/
52177
/
exec.tar
/
/
fond.php000066600000004704152442520510006214 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2019 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ /** * Gestion d'affichage des pages privées en squelette * * Chargé depuis ecrire/index.php lorsqu'une page demandée est présente * en tant que squelettes dans `prive/squelettes/contenu` ou que le * squelette peut être échaffaudé * * @package SPIP\Core\Exec */ if (!defined('_ECRIRE_INC_VERSION')) { return; } $fond = _request('exec'); $GLOBALS['delais'] = 0;// pas de cache ! // Securite if (strstr($fond, '/')) { if (!include_spip('inc/autoriser') or !autoriser('webmestre') ) { include_spip('inc/minipres'); echo minipres(); exit; } } else { $fond = "prive/squelettes/$fond"; } // quelques inclusions et ini prealables include_spip('inc/commencer_page'); /** * Fonction appelée en cas d'arrêt de php sur une erreur * * @todo supprimer cette fonction vide ? **/ function shutdown_error() { // si on arrive ici avec un tampon non ferme : erreur fatale /* if (ob_get_level()){ // envoyer tous les tampons while (ob_get_level()) ob_end_flush(); var_dump(error_get_last()); #echo "<hr />"."Erreur fatale (memoire ?)<hr />"; @flush(); }*/ } register_shutdown_function('shutdown_error'); // on retient l'envoi de html pour pouvoir tout jeter et generer une 403 // si on tombe sur un filtre sinon_interdire_acces // il faudrait etre capable de flusher cela des que le contenu principal est genere // car c'est lui qui peut faire des appels a ce filtre ob_start(); # comme on est dans un exec, l'auth a deja ete testee # on peut appeler directement public.php include "public.php"; // flushons si cela ne l'a pas encore ete ob_end_flush(); /** * Un exec générique qui branche sur un squelette Z pour écrire * * La fonction ne fait rien, c'est l'inclusion du fichier qui déclenche le traitement */ function exec_fond_dist() { } selectionner.php000066600000002666152442520510007765 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2019 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ /** * Gestion le l'affichage du sélecteur de rubrique AJAX * * @package SPIP\Core\Rubriques **/ if (!defined('_ECRIRE_INC_VERSION')) { return; } include_spip('inc/actions'); /** * Affichage en ajax du sélecteur (mini-navigateur) de rubrique AJAX * * @uses inc_selectionner_dist() * @uses ajax_retour() **/ function exec_selectionner_dist() { $id = intval(_request('id')); $exclus = intval(_request('exclus')); $type = _request('type'); $rac = _request('racine'); $do = _request('do'); if (preg_match('/^\w*$/', $do)) { if (!$do) { $do = 'aff'; } $selectionner = charger_fonction('selectionner', 'inc'); $r = $selectionner($id, "choix_parent", $exclus, $rac, $type != 'breve', $do); } else { $r = ''; } ajax_retour($r); } fond_monobloc.php000066600000007336152442520510010110 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2019 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ /** * Gestion d'affichage des pages privées en squelette (méthode dépreciée) * * Chargé depuis ecrire/index.php lorsqu'une page demandée est présente * en tant que squelettes dans `prive/exec`. * * @deprecated * Il faut créer les squelettes de l'espace privé dans `prive/squelettes` * * @package SPIP\Core\Exec */ if (!defined('_ECRIRE_INC_VERSION')) { return; } /** * Un exec générique qui utilise le fond homonyme de l'exec demandé * dans l'URL * * Ancien système transitoire basé sur un squelette unique avec un * pseudo balisage par commentaires HTML * * @deprecated Ne plus utiliser. Migrer vers `prive/squelettes/` * * @pipeline_appel affiche_hierarchie * @pipeline_appel affiche_gauche * @pipeline_appel affiche_droite * @pipeline_appel affiche_milieu * */ function exec_fond_monobloc_dist() { // pas d'autorisation // c'est au fond de les gerer avec #AUTORISER, et de renvoyer un fond vide le cas echeant // qui declenchera un minipres acces interdit $exec = _request('exec'); $fond = trim(recuperer_fond("prive/exec/$exec", $_REQUEST)); if (!$fond) { include_spip('inc/minipres'); echo minipres(); } else { $titre = "exec_$exec"; $hierarchie = ""; $navigation = ""; $extra = ""; // recuperer le titre dans le premier hn de la page if (preg_match(",<h[1-6][^>]*>(.+)</h[1-6]>,Uims", $fond, $match)) { $titre = $match[1]; } // recuperer la hierarchie (au-dessus du contenu) if (preg_match(",<!--#hierarchie-->.+<!--/#hierarchie-->,Uims", $fond, $match)) { $hierarchie = $match[0]; $fond = str_replace($hierarchie, "", $fond); } // recuperer la navigation (colonne de gauche) if (preg_match(",<!--#navigation-->.+<!--/#navigation-->,Uims", $fond, $match)) { $navigation = $match[0]; $fond = str_replace($navigation, "", $fond); } // recuperer les extras (colonne de droite) if (preg_match(",<!--#extra-->.+<!--/#extra-->,Uims", $fond, $match)) { $extra = $match[0]; $fond = str_replace($extra, "", $fond); } include_spip('inc/presentation'); // alleger les inclusions avec un inc/presentation_mini $commencer_page = charger_fonction('commencer_page', 'inc'); echo $commencer_page($titre); if ($hierarchie) { echo debut_grand_cadre(true); echo pipeline( 'affiche_hierarchie', array( 'args' => array( 'exec' => $exec ), 'data' => $hierarchie ) ); echo fin_grand_cadre(true); } echo debut_gauche("exec_$exec", true); $contexte = array('exec' => $exec); if ($objet_exec = trouver_objet_exec($exec)) { $id = $objet_exec['id_table_objet']; if (_request($id)) { $contexte[$id] = _request($id); } } echo $navigation; echo pipeline('affiche_gauche', array('args' => $contexte, 'data' => '')); echo creer_colonne_droite("exec_$exec", true); echo $extra; echo pipeline('affiche_droite', array('args' => $contexte, 'data' => '')); echo debut_droite("exec_$exec", true); echo $fond; echo pipeline('affiche_milieu', array('args' => $contexte, 'data' => '')); echo fin_gauche(), fin_page(); } } valider_xml.php000066600000033657152442520510007605 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2019 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ /** * Gestion de la validation XML selon une DTD * * @package SPIP\Core\Valider_XML */ if (!defined('_ECRIRE_INC_VERSION')) { return; } include_spip('inc/presentation'); include_spip('public/debusquer'); /** * Page d'affichage des résultats de validation XML selon une DTD * * - l'argument var_url peut indiquer un fichier ou un repertoire * - l'argument ext peut valoir "php" ou "html" * -- Si "php", le script est execute et la page valide * -- Si "html", on suppose que c'est un squelette dont on devine les args * en cherchant les occurrences de Pile[0]. * * @example * ``` * ecrire?exec=valider_xml&var_url=exec&ext=php pour tester l'espace prive * ecrire?exec=valider_xml&var_url=../squelettes-dist&ext=html pour le public * ``` * * @uses valider_xml_ok() **/ function exec_valider_xml_dist() { if (!autoriser('webmestre')) { include_spip('inc/minipres'); echo minipres(); } else { $erreur = ""; // verifier que les var de l'URL sont conformes avant d'appeler la fonction $url = trim(_request('var_url')); if (strncmp($url,'/',1)==0) $erreur = 'Chemin absolu interdit pour var_url'; // on a pas le droit de remonter plus de 1 fois dans le path (pas 2 occurences de ../ ou ..\ (win)) if (($p=strpos($url,'..'))!==false AND strpos($url,'..',$p+3)!==false) $erreur = 'Interdit de remonter en dehors de la racine'; if (strpos($url,'://')!==false or strpos($url,':\\')!==false) $erreur = 'URL absolue interdite pour var_url'; $ext = trim(_request('ext')); $ext = ltrim($ext,'.'); // precaution if (preg_match('/\W/',$ext)) $erreur = 'Extension invalide'; // en GET var_url doit etre signee, en POST seule l'action est signee // CSRF safe $process = true; if ($url){ include_spip('inc/securiser_action'); if ($_SERVER["REQUEST_METHOD"]=='POST'){ if (!$token = _request('var_token') or !verifier_cle_action("valider_xml",$token)){ $process = false; } } if ($_SERVER["REQUEST_METHOD"]!='POST'){ if (!$token = _request('var_token') or !verifier_cle_action("valider_xml&var_url=$url",$token)){ $process = false; } } } if ($erreur){ include_spip('inc/minipres'); echo minipres($erreur); } else { valider_xml_ok($url, $ext, intval(_request('limit')), _request('recur'), $process); } } } /** * 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 * @param bool $process * **/ function valider_xml_ok($url, $req_ext, $limit, $rec, $process = true) { $url = urldecode($url); $rec = !$rec ? false : array(); $res = ''; if (!$limit) { $limit = 200; } $titre = _T('analyse_xml'); if (!$url) { $url_aff = ''; $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 ($process) { 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 { $url_aff = entites_html($url); } } 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; } $url_aff = entites_html($url); $bandeau = ""; if ($process) { $transformer_xml = charger_fonction('valider', 'xml'); 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_aff."</a>"; } } } $commencer_page = charger_fonction('commencer_page', 'inc'); $debut = $commencer_page($titre); $jq = http_script("", 'jquery.js'); echo str_replace('<head>', "<head>$jq", $debut); include_spip('inc/securiser_action'); $token = calculer_cle_action("valider_xml"); $texte = '<input type="text" size="70" value="' . $url_aff . '" name="var_url" id="var_url" placeholder="http://" />'; $texte .= '<input type="hidden" value="' . $token . '" name="var_token" />'; $texte .= '<input type="hidden" value="' . $req_ext . '" name="ext" />'; $texte .= '<input type="submit" value="Go" />'; $texte = generer_form_ecrire('valider_xml', $texte, " method='post'"); $self = generer_url_ecrire('valider_xml'); $self = parametre_url($self, 'var_url', $url); $self = parametre_url($self, 'ext', $req_ext); $self = parametre_url($self, 'limit', $limit); $self = parametre_url($self, 'rec', $rec); $self = "<a href='$self'>$self</a>"; echo "<h1 class='grostitre'>", $titre, " <small>$bandeau</small>", '</h1>', "<div style='text-align: center'>", $texte, "</div>", $res, "<br /><br /><p><small>$self</small></p>", fin_page(); } /** * * Vérifie la conformité du xml, élément par élément. * * @param array $res * @param string $mode * @return array **/ function valider_resultats($res, $mode) { include_spip('inc/securiser_action'); $i = $j = 0; $table = ''; rsort($res); foreach ($res as $l) { $i++; $class = 'row_' . alterner($i, 'even', 'odd'); list($nb, $texte, $erreurs, $script, $appel, $temps) = $l; if ($texte < 0) { $texte = (0 - $texte); $color = ";color: red"; } else { $color = ''; } $err = (!intval($nb)) ? '' : ($erreurs[0][0] . ' ' . _T('ligne') . ' ' . $erreurs[0][1] . ($nb == 1 ? '' : ' ...')); if ($err) { $j++; } if ($mode) { $h = $appel . '&var_mode=debug&var_mode_affiche=validation'; } else { $h = generer_url_ecrire('valider_xml', "var_url=" . urlencode($appel)); $h = parametre_url($h,'var_token', calculer_cle_action("valider_xml&var_url=$appel")); } $table .= "<tr class='$class'>" . "<td style='text-align: right'>$nb</td>" . "<td style='text-align: right$color'>$texte</td>" . "<td style='text-align: right'>$temps</td>" . "<td style='text-align: left'>$err</td>" . "<td>$script</td>" . "<td><a href='$h'>$appel</a></td>"; } return array( $j, "<table class='spip'>" . "<tr><th>" . _T('erreur_texte') . "</th><th>" . _T('taille_octets', array('taille' => ' ')) . "</th><th>" . _T('zbug_profile', array('time' => '')) . "</th><th>" . _T('message') . "</th><th>Page</th><th>args" . "</th></tr>" . $table . "</table>" ); } /** * Valide l'existence d'un script ou d'une fonction * * @uses valider_pseudo_url() * * @param string $transformer_xml * @param string $script * Nom de la fonction à charger * @param string $dir * Nom du répertoire qui contiendrait le fichier et/ou la fonction à chercher/charger. * @param string $ext * Nom de l'extension du fichier contenant la fonction à vérifier. * @return array */ function valider_script($transformer_xml, $script, $dir, $ext) { $script = basename($script, '.php'); $dir = basename($dir); $f = charger_fonction($script, $dir, true); // ne pas se controler soi-meme ni l'index du repertoire ni un fichier annexe if ($script == _request('exec') or $script == 'index' or !$f) { return array('/', 0, '', $script, ''); } $val = $transformer_xml($f, true); $appel = ''; // s'il y a l'attribut minipres, le test est non significatif // le script necessite peut-etre des arguments, on lui en donne, // en appelant la fonction _args associee si elle existe // Si ca ne marche toujours pas, les arguments n'étaient pas bons // ou c'est une authentification pour action d'administration; // tant pis, on signale le cas par un resultat negatif if (strpos($val->page, "id='minipres'")) { if (!$g = charger_fonction($script . '_args', $dir, true)) { $res = 0 - strlen($val->page); } else { $args = array(1, 'id_article', 1); $val = $transformer_xml($g, $args); $appel = 'id_article=1&type=id_article&id=1'; if (strpos($val->page, "id='minipres'")) { $res = 0 - strlen($val->page); } else { $res = strlen($val->page); } } } else { $res = strlen($val->page); } $appel = valider_pseudo_url($dir, $script, $appel); $err = $val->err; return array(count($err), $res, $err, $script, $appel); } /** * Construire la bonne URL selon l'endroit où on se trouve. * * @param string $dir * Par défaut, on vérifie si on est sur une page `?exec=XX` * @param string $script * @param string $args [description] * @return string */ function valider_pseudo_url($dir, $script, $args = '') { return ($dir == 'exec') ? generer_url_ecrire($script, $args, false, true) : ("./?$dir=$script" . ($args ? "&$args" : '')); } /** * Essayer de valider un texte même sans Doctype * à moins qu'un Content-Type dise clairement que ce n'est pas du XML * * @param string $transformer_xml * @param string $file * @param string $dir * @param string $ext * @return array */ function valider_skel($transformer_xml, $file, $dir, $ext) { if (!lire_fichier($file, $text)) { return array('/', '/', $file, ''); } if (!strpos($text, 'DOCTYPE')) { preg_match(",Content[-]Type: *\w+/(\S)+,", $text, $r); if ($r[1] === 'css' or $r[1] === 'plain') { return array('/', 'DOCTYPE?', $file, ''); } } if ($ext != 'html') { // validation d'un non squelette $page = array('texte' => $text); $url = url_de_base() . _DIR_RESTREINT_ABS . $file; $script = $file; } else { $script = basename($file, '.html'); // pas de validation solitaire pour les squelettes internes, a revoir. if (substr_count($dir, '/') <= 1) { $url = generer_url_public($script, $contexte); } else { $url = ''; } $composer = charger_fonction('composer', 'public'); list($skel_nom, $skel_code) = $composer($text, 'html', 'html', $file); spip_log("compilation de $file en " . strlen($skel_code) . " octets de nom $skel_nom"); if (!$skel_nom) { return array('/', '/', $file, ''); } $contexte = valider_contexte($skel_code, $file); $page = $skel_nom(array('cache' => ''), array($contexte)); } $res = $transformer_xml($page['texte']); return array(count($res->err), strlen($res->page), $res->err, $script, $url); } /** * Analyser le code pour construire un contexte plausible complet * * i.e. ce qui est fourni par `$Pile[0]` * en éliminant les exceptions venant surtout des Inclure * * Il faudrait trouver une typologie pour générer un contexte parfait: * actuellement ça produit parfois des erreurs SQL à l'appel de $skel_nom * * @see valider_skel() * @param string $code * @param string $file * @return array */ function valider_contexte($code, $file) { static $exceptions = array('action', 'doublons', 'lang'); preg_match_all('/(\S*)[$]Pile[[]0[]][[].(\w+).[]](\S*)/', $code, $r, PREG_SET_ORDER); $args = array(); // evacuer les repetitions et les faux parametres foreach ($r as $v) { list(, $f, $nom, $suite) = $v; if (!in_array($nom, $exceptions) and (!isset($args[$nom]) or !$args[$nom]) ) { $args[$nom] = ((strpos($f, 'sql_quote') !== false) and strpos($suite, "'int'") !== false); } } $contexte = array(); // etudier l'ajout de: // 'lang' => $GLOBALS['spip_lang'], // 'date' => date('Y-m-d H:i:s')); foreach ($args as $nom => $f) { if (!$f) { $val = 'id_article'; } else { // on suppose que arg numerique => primary-key d'une table // chercher laquelle et prendre un numero existant $val = 0; $type = (strpos($nom, 'id_') === 0) ? substr($nom, 3) : $nom; $trouver_table = charger_fonction('trouver_table', 'base'); $table = $trouver_table(table_objet_sql($type)); if ($table) { $val = @sql_getfetsel($nom, $table['table'], '', '', '', "0,1"); } // porte de sortie si ca marche pas, if (!$val) { $val = 1; } } $contexte[$nom] = $val; } return $contexte; } /** * Valide la conformité XML d'une liste de fichiers dans un répertoire * * @param array $files * Liste des fichiers * @param string $ext * Extension des fichiers * @param string $dir * Chemin du répertoire * @return array **/ function valider_dir($files, $ext, $dir) { $res = array(); $transformer_xml = charger_fonction('valider', 'xml'); $valideur = $ext == 'php' ? 'valider_script' : 'valider_skel'; foreach ($files as $f) { spip_timer($f); $val = $valideur($transformer_xml, $f, $dir, $ext); $n = spip_timer($f); $val[] = $n; spip_log("validation de $f en $n secondes"); $res[] = $val; } return $res; } base_delete_all.php000066600000003416152442520510010351 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2019 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ /** * Gestion d'affichage de la page de destruction des tables de SPIP * * @package SPIP\Core\Exec */ if (!defined('_ECRIRE_INC_VERSION')) { return; } /** * Exec de la page de destruction des tables de SPIP **/ function exec_base_delete_all_dist() { include_spip('inc/autoriser'); if (!autoriser('detruire')) { include_spip('inc/minipres'); echo minipres(); } else { include_spip('base/dump'); $res = base_lister_toutes_tables('', array(), array(), true); if (!$res) { include_spip('inc/minipres'); spip_log("Erreur base de donnees"); echo minipres(_T('info_travaux_titre'), _T('titre_probleme_technique') . "<p><tt>" . sql_errno() . " " . sql_error() . "</tt></p>"); } else { $res = base_saisie_tables('delete', $res); include_spip('inc/headers'); $res = "\n<ol style='text-align:left'><li>\n" . join("</li>\n<li>", $res) . '</li></ol>'; $admin = charger_fonction('admin', 'inc'); $res = $admin('delete_all', _T('titre_page_delete_all'), $res); if (!$res) { redirige_url_ecrire('install', ''); } else { echo $res; } } } } upgrade.php000066600000006156152442520510006720 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2019 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ /** * Gestion de l'installation et de la mise à jour de SPIP * * @package SPIP\Core\Upgrade */ if (!defined('_ECRIRE_INC_VERSION')) { return; } include_spip('inc/actions'); include_spip('inc/headers'); /** * Fonction d'installation et de mise à jour du core de SPIP * * @return void **/ function exec_upgrade_dist() { if (!_FILE_CONNECT) { redirige_url_ecrire("install"); } // Si reinstallation necessaire, message ad hoc if (_request('reinstall') == 'oui') { include_spip('inc/minipres'); $r = minipres(_T('titre_page_upgrade'), "<p><b>" . _T('texte_nouvelle_version_spip_1') . "</b><p> " . _T('texte_nouvelle_version_spip_2', array('connect' => '<tt>' . _FILE_CONNECT . '</tt>')) . generer_form_ecrire('upgrade', "<input type='hidden' name='reinstall' value='non' />", '', _T('bouton_relancer_installation'))); echo $r; } elseif (_request('fin')) { include_spip('inc/plugin'); actualise_plugins_actifs(); include_spip('inc/headers'); $res = generer_url_ecrire('admin_plugin', 'var_mode=recalcul'); echo redirige_formulaire($res); } else { if (!isset($GLOBALS['meta']['version_installee'])) { $GLOBALS['meta']['version_installee'] = 0.0; } else { $GLOBALS['meta']['version_installee'] = (double)str_replace(',', '.', $GLOBALS['meta']['version_installee']); } # NB: str_replace car, sur club-internet, il semble que version_installe soit # enregistree au format '1,812' et non '1.812' // Erreur downgrade // (cas de double installation de fichiers SPIP sur une meme base) if ($GLOBALS['spip_version_base'] < $GLOBALS['meta']['version_installee']) { $commentaire = _T('info_mise_a_niveau_base_2'); } // Commentaire standard upgrade else { $commentaire = _T('texte_mise_a_niveau_base_1'); } $commentaire .= "<br />[" . $GLOBALS['meta']['version_installee'] . "/" . $GLOBALS['spip_version_base'] . "]"; $_POST['reinstall'] = 'non'; // pour copy_request dans admin include_spip('inc/headers'); $admin = charger_fonction('admin', 'inc'); $res = $admin('upgrade', _T('info_mise_a_niveau_base'), $commentaire); if ($res) { echo $res; } else { // effacer les alea pour forcer leur relecture // si jamais ils ont change pendant l'upgrade unset($GLOBALS['meta']['alea_ephemere']); unset($GLOBALS['meta']['alea_ephemere_ancien']); $res = redirige_action_auteur('purger', 'cache', 'upgrade', 'fin=oui', true); echo redirige_formulaire($res); } } } informer.php000066600000002672152442520510007111 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2019 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ /** * Gestion d'affichage ajax d'une rubrique sélectionnée dans le mini navigateur * * @package SPIP\Core\Exec */ if (!defined('_ECRIRE_INC_VERSION')) { return; } include_spip('inc/actions'); /** * Affiche en ajax des informations d'une rubrique selectionnée dans le mini navigateur * * @uses inc_informer_dist() * @uses ajax_retour() **/ function exec_informer_dist() { $id = intval(_request('id')); $col = intval(_request('col')); $exclus = intval(_request('exclus')); $do = _request('do'); if (preg_match('/^\w*$/', $do)) { if (!$do) { $do = 'aff'; } $informer = charger_fonction('informer', 'inc'); $res = $informer($id, $col, $exclus, _request('rac'), _request('type'), $do); } else { $res = ''; } ajax_retour($res); } base_repair.php000066600000003252152442520510007537 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2019 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ /** * Gestion d'affichage de la page de réparation de la base de données * * ## REMARQUE IMPORTANTE : SÉCURITÉ * * Ce systeme de réparation doit pouvoir fonctionner même si * la table spip_auteurs est en panne : index.php n'appelle donc pas * inc_auth ; seule l'authentification FTP est exigée. * * @package SPIP\Core\Exec */ if (!defined('_ECRIRE_INC_VERSION')) { return; } /** * Réparer la base de données */ function exec_base_repair_dist() { $ok = false; if (!spip_connect()) { $message = _T('titre_probleme_technique'); } else { $version_sql = sql_version(); if (!$version_sql) { $message = _T('avis_erreur_connexion_mysql'); } else { $message = _T('texte_requetes_echouent'); $ok = true; } $action = _T('texte_tenter_reparation'); } if ($ok) { $admin = charger_fonction('admin', 'inc'); echo $admin('repair', $action, $message, true); } else { include_spip('inc/minipres'); echo minipres(_T('titre_reparation'), "<p>$message</p>"); } } rechercher.php000066600000011426152442520510007377 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2019 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ /** * Gestion de la recherche ajax du mini navigateur de rubriques * * Cette possibilité de recherche apparaît s'il y a beaucoup de rubriques dans le site. * * @package SPIP\Core\Rechercher **/ if (!defined('_ECRIRE_INC_VERSION')) { return; } include_spip('inc/actions'); include_spip('inc/texte'); /** * Prépare la fonction de recherche ajax du mini navigateur de rubriques * * @uses exec_rechercher_args() Formate le rendu de la recherche. * @uses ajax_retour() **/ function exec_rechercher_dist() { $id = intval(_request('id')); $exclus = intval(_request('exclus')); $rac = spip_htmlentities(_request('rac')); $type = _request('type'); $do = _request('do'); if (preg_match('/^\w*$/', $do)) { $r = exec_rechercher_args($id, $type, $exclus, $rac, $do); } else { $r = ''; } ajax_retour($r); } /** * Formate le rendu de la recherche ajax du mini navigateur de rubriques * * @see calcul_branche_in() * @see proposer_item() * * @param int $id * @param string $type * @param string|int|array $exclus * @param string|bool $rac * @param string $do * @return string **/ function exec_rechercher_args($id, $type, $exclus, $rac, $do) { if (!$do) { $do = 'aff'; } $points = $rub = array(); $where = preg_split(",\s+,", $type); if ($where) { foreach ($where as $k => $v) { $where[$k] = "'%" . substr(str_replace("%", "\%", sql_quote($v, '', 'string')), 1, -1) . "%'"; } $where_titre = ("(titre LIKE " . join(" AND titre LIKE ", $where) . ")"); $where_desc = ("(descriptif LIKE " . join(" AND descriptif LIKE ", $where) . ")"); $where_id = ("(id_rubrique = " . intval($type) . ")"); if ($exclus) { include_spip('inc/rubriques'); $where_exclus = " AND " . sql_in('id_rubrique', calcul_branche_in($exclus), 'NOT'); } else { $where_exclus = ''; } foreach (array( 3 => $where_titre, 2 => $where_desc, 1 => $where_id, ) as $point => $recherche) { $res = sql_select("id_rubrique, id_parent, titre", "spip_rubriques", "$recherche$where_exclus"); while ($row = sql_fetch($res)) { $id_rubrique = $row["id_rubrique"]; if (!isset($rub[$id_rubrique])) { $rub[$id_rubrique] = array(); } $rub[$id_rubrique]["titre"] = typo($row["titre"]); $rub[$id_rubrique]["id_parent"] = $row["id_parent"]; if (!isset($points[$id_rubrique])) { $points[$id_rubrique] = 0; } $points[$id_rubrique] = $points[$id_rubrique] + $point; } } } if ($points) { arsort($points); $style = " style='background-image: url(" . chemin_image('secteur-12.png') . ")'"; foreach ($rub as $k => $v) { $rub[$k]['atts'] = ($v["id_parent"] ? $style : '') . " class='petite-rubrique'"; } } return (proposer_item($points, $rub, $rac, $type, $do)); } /** * Résultat de la recherche intéractive demandée par la fonction JS * `onkey_rechercher` * * @note * `onkey_rechercher()` testera s'il comporte une seule balise au premier niveau * car cela qui indique qu'un seul résultat a été trouvé. * * Attention donc à composer le message d'erreur avec au moins 2 balises. * * @param array $ids * @param array|string $titles * @param string|bool $rac * @param string $type * @param string $do * @return string **/ function proposer_item($ids, $titles, $rac, $type, $do) { if (!$ids) { return "<br /><br /><div style='padding: 5px; color: red;'><b>" . spip_htmlentities($type) . "</b> : " . _T('avis_aucun_resultat') . "</div>"; } $ret = ''; $info = generer_url_ecrire('informer', "type=rubrique&rac=$rac&id="); $onClick = "aff_selection(this.firstChild.title,'$rac" . "_selection','$info', event)"; $ondbClick = "$do(this.firstChild.firstChild.nodeValue,this.firstChild.title,'selection_rubrique', 'id_parent');"; foreach ($ids as $id => $bof) { $titre = strtr(str_replace("'", "’", str_replace('"', """, textebrut($titles[$id]["titre"]))), "\n\r", " "); $ret .= "<div class='highlight off'\nonclick=\"changerhighlight(this); " . $onClick . "\"\nondblclick=\"" . $ondbClick . $onClick . " \"><div" . $titles[$id]["atts"] . " title='$id'> " . $titre . "</div></div>"; } return $ret; } demande_mise_a_jour.php000066600000004261152442520510011235 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2019 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ /** * Gestion d'affichage de la page de demande de mise à jour de la base de données * * Chargé depuis ecrire/index.php lorsque les numéros de versions de base * entre les fichiers et la meta ne sont pas identiques. * * @package SPIP\Core\Exec */ if (!defined('_ECRIRE_INC_VERSION')) { return; } /** * Demander à mettre à jour la base de données */ function exec_demande_mise_a_jour_dist() { // on fait la verif du path avant tout, // et l'installation des qu'on est dans la colonne principale // si jamais la liste des plugins actifs change, il faut faire un refresh du hit // pour etre sur que les bons fichiers seront charges lors de l'install include_spip('inc/plugin'); if (actualise_plugins_actifs()) { include_spip('inc/headers'); redirige_par_entete(self()); } include_spip('inc/presentation'); include_spip('inc/filtres_boites'); $commencer_page = charger_fonction('commencer_page', 'inc'); echo $commencer_page('', '', '', '', true, false, false); echo debut_grand_cadre(true); echo boite_ouvrir(_T('info_message_technique'), 'notice'); echo "<p>" . _T('info_procedure_maj_version') . "</p>", "<p>" . _T('info_administrateur_site_01') . "</p>"; echo bouton_action(_T('bouton_mettre_a_jour_base'), generer_url_ecrire("upgrade", "reinstall=non")); echo boite_fermer(); // masquer les erreurs sql sur cette page car proviennent de la base pas a jour ! echo '<style type="text/css">#debug-nav {display: none;}</style>'; echo fin_grand_cadre(true); echo fin_page(); } 404.php000066600000003325152442520510005573 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2019 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ /** * Gestion d'affichage de page introuvable * * @package SPIP\Core\Exec */ if (!defined('_ECRIRE_INC_VERSION')) { return; } /** * Un exec d'erreur */ function exec_404_dist() { $exec = _request('exec'); $titre = "exec_$exec"; $navigation = ''; $extra = ''; include_spip('inc/presentation'); // alleger les inclusions avec un inc/presentation_mini $commencer_page = charger_fonction('commencer_page', 'inc'); echo $commencer_page($titre); echo debut_gauche("404_$exec", true); echo pipeline('affiche_gauche', array('args' => array('exec' => '404', 'exec_erreur' => $exec), 'data' => '')); echo creer_colonne_droite('404', true); echo pipeline('affiche_droite', array('args' => array('exec' => '404', 'exec_erreur' => $exec), 'data' => '')); echo debut_droite('404', true); echo "<h1 class='grostitre'>" . _T('fichier_introuvable', array('fichier' => $exec)) . '</h1>'; echo pipeline('affiche_milieu', array('args' => array('exec' => '404', 'exec_erreur' => $exec), 'data' => '')); echo fin_gauche(), fin_page(); } 403.php000066600000004117152442520510005572 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2019 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ /** * Gestion d'affichage d'accès interdit * * @package SPIP\Core\Exec */ if (!defined('_ECRIRE_INC_VERSION')) { return; } /** * Un exec d'acces interdit * * @param string $message */ function exec_403_dist($message = '') { $exec = _request('exec'); $titre = "exec_$exec"; $navigation = ''; $extra = ''; if (!$message) { $message = _L("Vous n'avez pas le droit d'accéder à la page <b>@exec@</b>.", array('exec' => _request('exec'))); } $contenu = "<h1 class='grostitre'>" . _T('info_acces_interdit') . '</h1>' . $message; if (_request('var_zajax')) { include_spip('inc/actions'); ajax_retour($contenu); } else { include_spip('inc/presentation'); // alleger les inclusions avec un inc/presentation_mini $commencer_page = charger_fonction('commencer_page', 'inc'); echo $commencer_page($titre); echo debut_gauche("403_$exec", true); echo recuperer_fond('prive/squelettes/navigation/dist', array()); echo pipeline('affiche_gauche', array('args' => array('exec' => '403', 'exec_erreur' => $exec), 'data' => '')); echo creer_colonne_droite('403', true); echo pipeline('affiche_droite', array('args' => array('exec' => '403', 'exec_erreur' => $exec), 'data' => '')); echo debut_droite('403', true); echo pipeline( 'affiche_milieu', array('args' => array('exec' => '403', 'exec_erreur' => $exec), 'data' => $contenu) ); echo fin_gauche(), fin_page(); } } admin_plugin.php000066600000022173152442520510007734 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2019 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ /** * Gestion d'affichage de l'administration des plugins * * @package SPIP\Core\Exec */ if (!defined('_ECRIRE_INC_VERSION')) { return; } include_spip('inc/config'); include_spip('inc/plugin'); include_spip('inc/presentation'); include_spip('inc/layer'); include_spip('inc/actions'); include_spip('inc/securiser_action'); /** * Affichage de la page de gestion des plugins * * Relance la page si des plugins ont été modifiés, sinon affiche la liste. * * @uses actualise_plugins_actifs() * @param string $retour Inutilisé */ function exec_admin_plugin_dist($retour = '') { if (!autoriser('configurer', '_plugins')) { include_spip('inc/minipres'); echo minipres(); } else { // on fait la verif du path avant tout, // et l'installation des qu'on est dans la colonne principale // si jamais la liste des plugins actifs change, il faut faire un refresh du hit // pour etre sur que les bons fichiers seront charges lors de l'install $new = actualise_plugins_actifs(); if ($new and _request('actualise') < 2) { include_spip('inc/headers'); if (isset($GLOBALS['fichier_php_compile_recent'])) { // attendre eventuellement l'invalidation du cache opcode spip_attend_invalidation_opcode_cache($GLOBALS['fichier_php_compile_recent']); } redirige_par_entete(parametre_url(self(), 'actualise', _request('actualise') + 1, '&')); } else { admin_plug_args(_request('voir'), _request('erreur'), _request('format')); } } } /** * Affichage spécifique de la page de gestion des plugins * * Affiche la liste des plugins demandés et les erreurs éventuelles. * * @uses plugin_donne_erreurs() * @uses liste_chemin_plugin() * @uses plugin_installes_meta() * @uses affiche_les_plugins_verrouilles() * * @pipeline_appel affiche_gauche * @pipeline_appel affiche_droit * @pipeline_appel affiche_milieu * * @param string $quoi * Quels plugins afficher ? actifs, ou autre * @param string $erreur * Erreur éventuelle à afficher * @param string $format * Format d'affichage (liste ou arborescence) **/ function admin_plug_args($quoi, $erreur, $format) { if (!$quoi) { $quoi = 'actifs'; } // empecher l'affichage des erreurs dans le bandeau, on le donne ensuite // format brut par plugin $GLOBALS['erreurs_activation_raw'] = plugin_donne_erreurs(true, false); // format resume mis en forme $erreur_activation = plugin_donne_erreurs(); $commencer_page = charger_fonction('commencer_page', 'inc'); echo $commencer_page(_T('icone_admin_plugin'), "configuration", "plugin"); echo debut_gauche('plugin', true); echo recuperer_fond('prive/squelettes/navigation/configurer', array('exec' => 'admin_plugin')); echo pipeline('affiche_gauche', array( 'args' => array('exec' => 'admin_plugin'), 'data' => afficher_librairies() ) ); echo debut_droite('plugin', true); echo gros_titre(_T('icone_admin_plugin'), '', false); // Barre d'onglets de premier niveau echo barre_onglets("plugins", "plugins_actifs"); // Barre d'onglets de second niveau $onglet2 = $quoi == 'actifs' ? 'plugins_actifs' : 'admin_plugin'; echo debut_onglet('onglets_simple second'); echo onglet(_T('plugins_tous_liste'), generer_url_ecrire("admin_plugin", "voir=tous"), 'admin_plugin', $onglet2); echo onglet(_T('plugins_actifs_liste'), generer_url_ecrire("admin_plugin"), 'plugins_actifs', $onglet2); echo fin_onglet(); // message d'erreur au retour d'une operation if ($erreur) { echo "<div class='error'>$erreur</div>"; } if ($erreur_activation) { echo "<div class='error'>$erreur_activation</div>"; } // la mise a jour de cette meta a ete faite par ecrire_plugin_actifs $actifs = unserialize($GLOBALS['meta']['plugin']); $lcpa = $actifs + unserialize($GLOBALS['meta']['plugin_attente']); // Les affichages se basent sur le repertoire, pas sur le nom $actifs = liste_chemin_plugin($actifs, ''); if (defined('_DIR_PLUGINS_SUPPL')) { $lcpas = liste_chemin_plugin($lcpa, _DIR_PLUGINS_SUPPL); } $lcpa = liste_chemin_plugin($lcpa); // on installe les plugins maintenant, // cela permet aux scripts d'install de faire des affichages (moches...) plugin_installes_meta(); echo "<div class='liste-plugins formulaire_spip'>"; echo debut_cadre_trait_couleur('plugin-24.png', true, '', _T('plugins_liste'), 'plugins'); if ($quoi !== 'actifs') { $lpf = liste_plugin_files(); if ($lpf) { echo "<p>" . _T('texte_presente_plugin') . "</p>"; } else { if (!@is_dir(_DIR_PLUGINS)) { echo "<p>" . _T('plugin_info_automatique_ftp', array('rep' => joli_repertoire(_DIR_PLUGINS))) . " — " . _T('plugin_info_automatique_creer') . "</p>"; } } $lcpaffiche = $lpf; if (defined('_DIR_PLUGINS_SUPPL')) { $lcpaffichesup = liste_plugin_files(_DIR_PLUGINS_SUPPL); } } else { // la liste // $quoi=='actifs' $lcpaffiche = $lcpa; if (defined('_DIR_PLUGINS_SUPPL')) { $lcpaffichesup = $lcpas; } } if ($quoi == 'actifs' or $lpf) { $nb = count($lcpa); if (defined('_DIR_PLUGINS_SUPPL')) { $nb += count($lcpas); } echo "<h3>" . sinon(singulier_ou_pluriel($nb, 'plugins_actif_un', 'plugins_actifs', 'count'), _T('plugins_actif_aucun')) . "</h3>"; } if (empty($format)) { $format = 'liste'; } elseif (!in_array($format, array('liste', 'repertoires'))) { $format = 'repertoires'; } $afficher = charger_fonction("afficher_$format", 'plugins'); $corps = $afficher(self(), $lcpaffiche, $lcpa, $actifs); if (defined('_DIR_PLUGINS_SUPPL')) { $corps .= $afficher(self(), $lcpaffichesup, $lcpas, $actifs, _DIR_PLUGINS_SUPPL); } if ($corps) { $corps .= "\n<div class='boutons' style='display:none;'>" . "<input type='submit' class='submit save' value='" . _T('bouton_enregistrer') . "' />" . "</div>"; } echo redirige_action_post('activer_plugins', 'activer', 'admin_plugin', '', $corps); echo fin_cadre_trait_couleur(true); if ($quoi == 'actifs') { echo affiche_les_plugins_verrouilles($actifs); } echo "</div>"; echo http_script(" jQuery(function(){ jQuery('.plugins li.item a[rel=info]').click(function(){ var li = jQuery(this).parents('li').eq(0); var prefix = li.find('input.checkbox').attr('name'); if (!jQuery('div.details',li).html()) { jQuery('div.details',li).prepend(ajax_image_searching).load( jQuery(this).attr('href').replace(/admin_plugin|plugins/, 'info_plugin'), function(){ li.addClass('on'); } ); } else { if (jQuery('div.details',li).toggle().is(':visible')) li.addClass('on'); else li.removeClass('on'); } return false; }); jQuery('.plugins li.item input.checkbox').change(function(){ jQuery(this).parents('form').eq(0).find('.boutons').slideDown(); }); }); "); echo pipeline('affiche_milieu', array( 'args' => array('exec' => 'admin_plugin'), 'data' => '' ) ); echo fin_gauche(), fin_page(); } /** * Crée le code HTML de la liste des plugins verrouillés * * @uses liste_plugin_files() * * @param array $actifs * Liste des plugins actifs * @return string * Code HTML **/ function affiche_les_plugins_verrouilles($actifs) { if ((!$liste = liste_plugin_files(_DIR_PLUGINS_DIST))) { return ''; } $afficher = charger_fonction("afficher_liste", 'plugins'); $liste = $afficher(self(), $liste, array(), $actifs, _DIR_PLUGINS_DIST); return "<div id='plugins_dist'>" . debut_cadre_trait_couleur('', true, '', _T('plugins_liste_dist'), 'liste_plugins_dist') . "<p>" . _T('plugin_info_plugins_dist_1', array('plugins_dist' => joli_repertoire(_DIR_PLUGINS_DIST))) . '<br />' . _T('plugin_info_plugins_dist_2') . "</p>" . $liste . fin_cadre_trait_couleur(true) . "</div>\n"; } /** * Crée le code HTML de la liste des librairies présentes * * @uses liste_librairies() * * @return string Code HTML */ function afficher_librairies() { if (!$libs = liste_librairies()) { return ''; } ksort($libs); $res = debut_cadre_enfonce('', true, '', _T('plugin_librairies_installees')); $res .= '<dl>'; foreach ($libs as $lib => $rep) { $res .= "<dt>$lib</dt><dd>" . joli_repertoire($rep) . "</dd>\n"; } $res .= '</dl>'; $res .= fin_cadre_enfonce(true); return $res; } /** * Faire la liste des librairies disponibles * * @return array * Tableau (nom de la lib => repertoire , ...) */ function liste_librairies() { $libs = array(); foreach (array_reverse(creer_chemin()) as $d) { if (is_dir($dir = $d . 'lib/') and $t = opendir($dir) ) { while (($f = readdir($t)) !== false) { if ($f[0] != '.' and is_dir("$dir/$f") ) { $libs[$f] = $dir; } } } } return $libs; } index.php000066600000000002152442520510006360 0ustar00X plonger.php000066600000002737152442520510006740 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2019 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ /** * Gestion d'affichage ajax des sous rubriques dans le mini navigateur * * @package SPIP\Core\Exec */ if (!defined('_ECRIRE_INC_VERSION')) { return; } /** * Afficher en ajax les sous-rubriques d'une rubrique (composant du mini-navigateur) * * @uses inc_plonger_dist() * @uses ajax_retour() **/ function exec_plonger_dist() { include_spip('inc/actions'); $rac = preg_replace(',[^\w\,/#&;-]+,', ' ', _request('rac')); $id = intval(_request('id')); $exclus = intval(_request('exclus')); $col = intval(_request('col')); $do = _request('do'); if (preg_match('/^\w*$/', $do)) { if (!$do) { $do = 'aff'; } $plonger = charger_fonction('plonger', 'inc'); $r = $plonger($id, spip_htmlentities($rac), array(), $col, $exclus, $do); } else { $r = ''; } ajax_retour($r); } puce_statut.php000066600000004470152442520510007626 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2019 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ /** * Gestion des puces d'action rapide * * @package SPIP\Core\Puce_statut **/ if (!defined('_ECRIRE_INC_VERSION')) { return; } include_spip('inc/presentation'); /** * Gestion de l'affichage ajax des puces d'action rapide * * Récupère l'identifiant id et le type d'objet dans les données postées * et appelle la fonction de traitement de cet exec. * * @uses exec_puce_statut_args() * @return string Code HTML **/ function exec_puce_statut_dist() { exec_puce_statut_args(_request('id'), _request('type')); } /** * Traitement de l'affichage ajax des puces d'action rapide * * Appelle la fonction de traitement des puces statuts * après avoir retrouvé le statut en cours de l'objet * et son parent (une rubrique) * * @uses inc_puce_statut_dist() * @uses ajax_retour() * * @param int $id * Identifiant de l'objet * @param string $type * Type d'objet * @return string Code HTML **/ function exec_puce_statut_args($id, $type) { $id = intval($id); if ($table_objet_sql = table_objet_sql($type) and $d = lister_tables_objets_sql($table_objet_sql) and isset($d['statut_textes_instituer']) and $d['statut_textes_instituer'] ) { $prim = id_table_objet($type); if (isset($d['field']['id_rubrique'])) { $select = "id_rubrique,statut"; } else { $select = "0 as id_rubrique,statut"; } $r = sql_fetsel($select, $table_objet_sql, "$prim=$id"); $statut = $r['statut']; $id_rubrique = $r['id_rubrique']; } else { $id_rubrique = $id; $statut = 'prop'; // arbitraire } $puce_statut = charger_fonction('puce_statut', 'inc'); ajax_retour($puce_statut($id, $statut, $id_rubrique, $type, true)); } info_plugin.php000066600000002072152442520510007573 0ustar00<?php /** * Gestion d'affichage d'un descriptif de plugin en ajax * * @package SPIP\Core\Exec */ if (!defined('_ECRIRE_INC_VERSION')) { return; } include_spip('inc/actions'); /** * Affichage de la description d'un plugin (en ajax) * * @uses plugins_get_infos_dist() * @uses plugins_afficher_plugin_dist() * @uses affiche_bloc_plugin() * @uses ajax_retour() */ function exec_info_plugin_dist() { if (!autoriser('configurer', '_plugins')) { include_spip('inc/minipres'); echo minipres(); } else { $plug = _DIR_RACINE . htmlspecialchars(_request('plugin')); $get_infos = charger_fonction('get_infos', 'plugins'); $dir = ""; if (strncmp($plug, _DIR_PLUGINS, strlen(_DIR_PLUGINS)) == 0) { $dir = _DIR_PLUGINS; } elseif (strncmp($plug, _DIR_PLUGINS_DIST, strlen(_DIR_PLUGINS_DIST)) == 0) { $dir = _DIR_PLUGINS_DIST; } if ($dir) { $plug = substr($plug, strlen($dir)); } $info = $get_infos($plug, false, $dir); $afficher_plugin = charger_fonction("afficher_plugin", "plugins"); ajax_retour(affiche_bloc_plugin($plug, $info, $dir)); } } install.php000066600000004013152442520510006725 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2019 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ /** * Affichage des étapes d'installation de SPIP * * @package SPIP\Core\Exec */ if (!defined('_ECRIRE_INC_VERSION')) { return; } include_spip('inc/minipres'); include_spip('inc/install'); include_spip('inc/autoriser'); define('_ECRIRE_INSTALL', "1"); define('_FILE_TMP', '_install'); /** * Affiche un des écrans d'installation de SPIP * * Affiche l'étape d'installation en cours, en fonction du paramètre * d'url `etape` * * @uses inc_auth_dist() * @uses verifier_visiteur() * * @uses install_etape__dist() * Affiche l'écran d'accueil de l'installation, * si aucune étape n'est encore définie. * **/ function exec_install_dist() { $etape = _request('etape'); $deja = (_FILE_CONNECT and analyse_fichier_connection(_FILE_CONNECT)); // Si deja installe, on n'a plus le droit qu'a l'etape chmod // pour chgt post-install ou aux etapes supplementaires // de declaration de base externes. // Mais alors il faut authentifier car ecrire/index.php l'a omis if ($deja and in_array($etape, array('chmod', 'sup1', 'sup2'))) { $auth = charger_fonction('auth', 'inc'); if (!$auth()) { verifier_visiteur(); $deja = (!autoriser('configurer')); } } if ($deja) { // Rien a faire ici echo minipres(); } else { include_spip('base/create'); $fonc = charger_fonction("etape_$etape", 'install'); $fonc(); } }
/home/atelierpru/provence/6bf95/../tmp/../52177/exec.tar