/** * Calculer la taille du cache ou du cache image pour l'afficher en ajax sur la page d'admin de SPIP * * @param string|null $arg */ function action_calculer_taille_cache_dist($arg = null) { if (is_null($arg)) { $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); } include_spip('inc/filtres'); if ($arg == 'images') { $taille = calculer_taille_dossier(_DIR_VAR); $res = _T('ecrire:taille_cache_image', array('dir' => joli_repertoire(_DIR_VAR), 'taille' => "<b>" . (taille_en_octets($taille) > 0 ? taille_en_octets($taille) : "0 octet") . "</b>")); } else { include_spip('inc/invalideur'); $taille = calculer_taille_dossier(_DIR_CACHE_XML) + calculer_taille_dossier(_DIR_CACHE . 'skel/') + calculer_taille_dossier(_DIR_CACHE . 'wheels/') + calculer_taille_dossier(_DIR_CACHE . 'contextes/'); $taille += intval(taille_du_cache()); if ($taille <= 150000) { $res = _T('taille_cache_vide'); } elseif ($taille <= 1024 * 1024) { $res = _T('taille_cache_moins_de', array('octets' => taille_en_octets(1024 * 1024))); } else { $res = _T('taille_cache_octets', array('octets' => taille_en_octets($taille))); } $res = "<b>{$res}</b>"; } $res = "<p>{$res}</p>"; ajax_retour($res); }
function install_etape_4_dist() { // creer le repertoire cache, qui sert partout ! if (!@file_exists(_DIR_CACHE)) { $rep = preg_replace(',' . _DIR_TMP . ',', '', _DIR_CACHE); $rep = sous_repertoire(_DIR_TMP, $rep, true, true); } echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"'); echo info_progression_etape(4, 'etape_', 'install/'); echo "<div class='success'><b>" . _T('info_derniere_etape') . "</b><p>" . _T('info_utilisation_spip') . "</p></div>"; echo "<p>" . _T('plugin_info_plugins_dist_1', array('plugins_dist' => "<tt>" . joli_repertoire(_DIR_PLUGINS_DIST) . "</tt>")) . "</p>"; // installer les extensions include_spip('inc/plugin'); $afficher = charger_fonction("afficher_liste", 'plugins'); echo $afficher(self(), liste_plugin_files(_DIR_PLUGINS_DIST), array(), array(), _DIR_PLUGINS_DIST, 'afficher_nom_plugin'); // si la base de SPIP est up, on peut installer les plugins, sinon on passe cette etape // car les plugins supposent que la base de SPIP est dans son etat normal (mise a jour) // au premier passage dans l'espace prive on aura une demande d'upgrade qui se poursuit sur la page plugin // et procede alors a l'installation if (!isset($GLOBALS['meta']['version_installee']) or $GLOBALS['spip_version_base'] == str_replace(',', '.', $GLOBALS['meta']['version_installee'])) { plugin_installes_meta(); } // mettre a jour si necessaire l'adresse du site // securite si on arrive plus a se loger include_spip('inc/config'); appliquer_adresse_site(''); // aller a la derniere etape qui clos l'install et redirige $suite = "\n<input type='hidden' name='etape' value='fin' />" . bouton_suivant(_T('login_espace_prive')); echo generer_form_ecrire('install', $suite); echo install_fin_html(); }
/** * Sauvegarder par morceaux * * @param string $arg */ function action_restaurer_dist($arg = null) { if (!$arg) { $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); } $status_file = $arg; define('_DUMP_STATUS_FILE', $status_file); $status_file = _DIR_TMP . basename($status_file) . ".txt"; if (!lire_fichier($status_file, $status) or !($status = unserialize($status))) { include_spip('inc/headers'); echo redirige_formulaire(generer_url_ecrire("restaurer", 'status=' . _DUMP_STATUS_FILE, '', true, true)); } else { utiliser_langue_visiteur(); $archive = "<br />" . joli_repertoire($status['archive']); $action = _T('dump:info_restauration_sauvegarde', array('archive' => $archive)); $admin = charger_fonction('admin', 'inc'); echo $admin('restaurer', $action, "", true); } // forcer l'envoi du buffer par tous les moyens ! echo str_repeat("<br />\r\n", 256); while (@ob_get_level()) { @ob_flush(); @flush(); @ob_end_flush(); } }
function install_etape_4_dist() { // creer le repertoire cache, qui sert partout ! if (!@file_exists(_DIR_CACHE)) { $rep = preg_replace(',' . _DIR_TMP . ',', '', _DIR_CACHE); $rep = sous_repertoire(_DIR_TMP, $rep, true, true); } echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"'); echo info_progression_etape(4, 'etape_', 'install/'); echo "<div class='success'><b>" . _T('info_derniere_etape') . "</b><p>" . _T('info_utilisation_spip') . "</p></div>"; echo "<p>" . _T('plugin_info_plugins_dist_1', array('plugins_dist' => "<tt>" . joli_repertoire(_DIR_PLUGINS_DIST) . "</tt>")) . "</p>"; // installer les extensions include_spip('inc/plugin'); $afficher = charger_fonction("afficher_liste", 'plugins'); echo $afficher(self(), liste_plugin_files(_DIR_PLUGINS_DIST), array(), array(), _DIR_PLUGINS_DIST, 'afficher_nom_plugin'); plugin_installes_meta(); // mettre a jour si necessaire l'adresse du site // securite si on arrive plus a se loger include_spip('inc/config'); appliquer_adresse_site(''); // aller a la derniere etape qui clos l'install et redirige $suite = "\n<input type='hidden' name='etape' value='fin' />" . bouton_suivant(_T('login_espace_prive')); echo generer_form_ecrire('install', $suite); echo install_fin_html(); }
function formulaires_assistant_migration_charger_dist(){ if ($squelette = migration_determiner_dossier_squelette()) { $squelette = explode(':',$squelette); $squelette = array_map('joli_repertoire',$squelette); $squelette = implode(', ',$squelette); } $valeurs = array( '_etapes'=>3, 'editable' => autoriser('webmestre'), 'direction' => '', '_depuis_status' => '', 'url_cible' => '', 'migration_key' => '', 'quoi' => array('base','fichiers','squelettes'), '_auth_depuis' => verifier_auth_depuis()?' ':'', '_dir_img' => joli_repertoire(_DIR_IMG), '_dir_skel' => $squelette, ); if (_request('direction')=='depuis'){ $valeurs['_depuis_status'] = lire_migration_depuis_status(); } else { initialiser_migration_depuis(true); } return $valeurs; }
/** * Verifier * * @return array */ function formulaires_restaurer_verifier_dist() { $erreurs = array(); $nom = ""; if (!($fichier = _request('fichier')) and !($nom = _request('nom_sauvegarde'))) { $erreurs['fichier'] = _T('info_obligatoire'); } elseif ($fichier) { $fichier = basename($fichier); // securite if (!file_exists(dump_repertoire() . $fichier)) { $erreurs['fichier'] = _T('dump:erreur_nom_fichier'); } else { $nom = $fichier; } } else { $nom = basename($nom); // securite if (!file_exists(dump_repertoire() . $nom)) { $erreurs['nom_sauvegarde'] = _T('dump:erreur_nom_fichier'); $nom = ""; } } if (!$nom) { $erreurs['message_erreur'] = _T('dump:erreur_restaurer_verifiez'); } if ($nom) { $archive = dump_repertoire() . $nom; if (!($args = dump_connect_args($archive))) { $erreurs['tout_restaurer'] = _T('dump:erreur_sqlite_indisponible'); } dump_serveur($args); $tables = base_lister_toutes_tables('dump'); $tables = base_saisie_tables('tables', $tables, array(), _request('tables') ? _request('tables') : array(), 'dump'); $erreurs['tables'] = "<ol class='spip'><li class='choix'>\n" . join("</li>\n<li class='choix'>", $tables) . "</li></ol><input type='hidden' name='check_tables' value='oui' />\n"; if (!count(_request('tables')) and !_request('tout_restaurer') and _request('check_tables')) { $erreurs['tout_restaurer'] = _T('dump:selectionnez_table_a_restaurer'); } } if ($nom and (!count($erreurs) or count($erreurs) == 1 and isset($erreurs['tables']))) { if (_request('confirm') !== $nom) { $erreurs['message_confirm'] = _T('dump:info_selection_sauvegarde', array('fichier' => '<i>' . joli_repertoire(dump_repertoire() . $nom) . "</i>")) . "<br /><input type='checkbox' name='confirm' value='{$nom}' id='confirm' /> "; $erreurs['message_confirm'] .= "<label for='confirm'><strong>"; if (_request('tables')) { $erreurs['message_confirm'] .= _T('dump:confirmer_ecraser_tables_selection'); } else { $erreurs['message_confirm'] .= _T('dump:confirmer_ecraser_base'); } $erreurs['message_confirm'] .= "</strong></label>"; } else { unset($erreurs['tables']); } } if (count($erreurs) and !isset($erreurs['message_erreur'])) { $erreurs['message_erreur'] = ''; } // pas de message general automatique ici return $erreurs; }
function afficher_taille_cache_vignettes() { $taille = calculer_taille_dossier(_DIR_VAR); return _T('ecrire:taille_cache_image', array( 'dir' => joli_repertoire(_DIR_VAR), 'taille' => "<b>".taille_en_octets($taille)."</b>" ) ); }
function exec_cfg_install_libs_dist($class = null) { include_spip('inc/filtres'); include_spip("inc/presentation"); global $cfg_libs; // droits : il faut avoir le droit de choisir les plugins, // mais aussi d'en ajouter include_spip('inc/autoriser'); if (!autoriser('configurer', 'plugins')) { echo minipres(); exit; } pipeline('exec_init', array('args' => array('exec' => 'cfg'), 'data' => '')); $commencer_page = charger_fonction('commencer_page', 'inc'); echo $commencer_page(_T('cfg:installation_librairies'), 'cfg'); echo "<br /><br /><br />\n"; echo gros_titre(_T('cfg:installation_librairies'), '', false); // colonne gauche echo debut_gauche('', true); echo pipeline('affiche_gauche', array('args' => array('exec' => 'cfg'), 'data' => '')); echo creer_colonne_droite('', true); echo pipeline('affiche_droite', array('args' => array('exec' => 'cfg'), 'data' => '')); echo debut_droite("", true); // centre de la page echo debut_cadre_trait_couleur('', true, '', _T('cfg:installation_liste_libs')); // message pour creer le dossier lib/ if (!is_dir(_DIR_LIB) && !is_writable(_DIR_LIB)) { echo "<p class='important'>" . _T('cfg:installer_dossier_lib', array('dir' => joli_repertoire(_DIR_LIB))) . "</p>\n"; } // message pour installation 1.9.2 if ($spip192 = defined('_COMPAT_CFG_192') && _COMPAT_CFG_192) { echo "<p>" . _T('cfg:installer_lib_192', array('dir' => joli_repertoire(_DIR_LIB))) . "</p>\n"; } // mettre un lien pour telecharger les libs include_spip('inc/actions'); foreach ($cfg_libs as $lib => $info) { // deja present ? texte du bouton : "mettre a jour", sinon "telecharger" $quoi = is_dir(_DIR_LIB . $info['dir']) ? 'update' : 'install'; echo "<dl>\n"; echo "<dt>" . $info['nom'] . "</dt>\n"; echo "<dd>" . $info['description'] . "</dd>\n"; // cas 1.9.2 // proposer de copier manuellement le zip decompresse dans le dossier lib if ($spip192) { echo "<dd>" . ($quoi == 'update' ? "(" . _T('cfg:bouton_mettre_a_jour') . ") " : "") . "<a class='spip_out' href='{$info['install']}' />{$info['install']}</a></dd>\n"; // cas > 1.9.2 // chargeur plugin/lib de spip } else { echo "<dd>" . redirige_action_auteur('charger_plugin', 'lib', '', '', "<input type='hidden' name='url_zip_plugin' value='{$info['install']}' />" . "<input type='hidden' name='retour' value='" . self() . "' />" . "<input type='submit' class='fondo' name='ok' value='" . ($quoi == 'update' ? _T('cfg:bouton_mettre_a_jour') : _T('bouton_telecharger')) . "' />", "\nmethod='post'") . "</dd>\n"; } echo "</dl>\n"; } echo fin_cadre_trait_couleur(true); // pied echo fin_gauche() . fin_page(); }
/** * Charger #FORMULAIRE_SAUVEGARDER * @return array */ function formulaires_sauvegarder_charger_dist() { $dir_dump = dump_repertoire(); // ici on liste tout, les tables exclue sont simplement non cochees $exclude = lister_tables_noexport(); list($tables, ) = base_liste_table_for_dump($exclude); $tables = base_lister_toutes_tables('', $tables); $valeurs = array('_dir_dump' => joli_repertoire($dir_dump), '_dir_img' => joli_repertoire(_DIR_IMG), '_spipnet' => $GLOBALS['home_server'] . '/' . $GLOBALS['spip_lang'] . '_article1489.html', 'nom_sauvegarde' => basename(dump_nom_fichier($dir_dump, 'sqlite'), '.sqlite'), 'tout_sauvegarder' => (_request('nom_sauvegarde') and !_request('tout_sauvegarder')) ? '' : 'oui', '_tables' => "<ol class='spip'><li class='choix'>\n" . join("</li>\n<li class='choix'>", base_saisie_tables('tables', $tables, $exclude, _request('nom_sauvegarde') ? _request('tables') ? _request('tables') : array() : null)) . "</li></ol>\n", '_prefixe' => function_exists('base_prefixe_tables') ? base_prefixe_tables('') : 'spip'); return $valeurs; }
/** * Chargement du formulaire * 4 cas possibles : * - un nouveau fichier ($fichier='') * - un fichier a l'extension interdite * - un fichier de squelettes/, modifiable * - un fichier existant (d'un plugin par exe), * qui doit etre copie dans squelettes/ a l'enregistrement * * @param string $path_base * @param string $fichier * @return array */ function formulaires_editer_squelette_charger_dist($path_base, $fichier){ $valeurs = array( 'fichier'=>$fichier, 'date'=>'', 'size'=>'', 'filename'=>'', 'path_base'=>$path_base, '_hidden'=>'', '_info_copie'=>'', 'editable'=>true ); if ($fichier){ if (!file_exists($fichier)) { $valeurs['editable'] = false; $valeurs['message_erreur'] = _T('skeleditor:erreur_fichier_inexistant'); $valeurs['fichier'] = ''; return $valeurs; } include_spip('inc/autoriser'); if (!autoriser('voir','squelette',$fichier)){ $valeurs['editable'] = false; $valeurs['message_erreur'] = _T('skeleditor:erreur_type_interdit'); $valeurs['fichier'] = ''; return $valeurs; } $valeurs['date'] = filemtime($fichier); $valeurs['size'] = filesize($fichier); if (autoriser('modifier','squelette',$fichier) AND strncmp($fichier, $path_base, strlen($path_base))==0) $valeurs['filename'] = substr($fichier,strlen($path_base)); // pour le renommage elseif(strncmp($fichier, $path_base, strlen($path_base))!=0){ // c'est une copie dans le dossier squelettes/ $valeurs['filename'] = skeleditor_nom_copie($fichier); $valeurs['_hidden'] .= "<input type='hidden' name='copie_squelette' value='".$valeurs['filename']."' />"; $valeurs['_info_copie'] = _T('skeleditor:info_copie',array('dir'=>joli_repertoire($path_base))); } } list($valeurs['code'],$valeurs['type'],$ctrl) = skeleditor_get_file_content_type_ctrl($fichier); $valeurs['_hidden'] .= "<input type='hidden' name='ctrl_md5' value='$ctrl' />"; // un hash pour eviter les problemes de modif concourantes return $valeurs; }
/** * Traitement du formulaire de téléchargement de plugin * * Télécharge le plugin via le téléporteur et rend la main. * * @return array * Retours du traitement **/ function formulaires_charger_plugin_archive_traiter_dist() { $retour = array(); $archive = _request('archive'); $dest = _request('destination'); include_spip('action/teleporter'); $teleporter_composant = charger_fonction('teleporter_composant', 'action'); $ok = $teleporter_composant('http', $archive, _DIR_PLUGINS_AUTO . $dest); if ($ok !== true) { $retour['message_erreur'] = $ok; } else { $retour['message_ok'] = _T('svp:message_telechargement_archive_effectue', array('dir' => joli_repertoire(_DIR_PLUGINS_AUTO . $dest))); } $retour['editable'] = true; return $retour; }
function formulaires_joindre_document_charger_dist($id_document = 'new', $id_objet = 0, $objet = '', $mode = 'auto', $galerie = false, $proposer_media = true, $proposer_ftp = true) { $valeurs = array(); $mode = joindre_determiner_mode($mode, $id_document, $objet); $valeurs['id'] = $id_document; $valeurs['_mode'] = $mode; $valeurs['url'] = 'http://'; $valeurs['fichier_upload'] = $valeurs['_options_upload_ftp'] = $valeurs['_dir_upload_ftp'] = ''; $valeurs['joindre_upload'] = $valeurs['joindre_distant'] = $valeurs['joindre_ftp'] = $valeurs['joindre_mediatheque'] = ''; $valeurs['editable'] = ' '; if (intval($id_document)) { $valeurs['editable'] = autoriser('modifier', 'document', $id_document) ? ' ' : ''; } $valeurs['proposer_media'] = is_string($proposer_media) ? preg_match('/^(false|non|no)$/i', $proposer_media) ? false : true : $proposer_media; $valeurs['proposer_ftp'] = is_string($proposer_ftp) ? preg_match('/^(false|non|no)$/i', $proposer_ftp) ? false : true : $proposer_ftp; # regarder si un choix d'upload FTP est vraiment possible if ($valeurs['proposer_ftp'] and test_espace_prive() and $mode != 'image' and $mode != 'vignette' and $GLOBALS['flag_upload']) { include_spip('inc/documents'); if ($dir = determine_upload('documents')) { // quels sont les docs accessibles en ftp ? $valeurs['_options_upload_ftp'] = joindre_options_upload_ftp($dir, $mode); // s'il n'y en a pas, on affiche un message d'aide // en mode document, mais pas en mode image if ($valeurs['_options_upload_ftp'] or ($mode == 'document' or $mode == 'choix')) { $valeurs['_dir_upload_ftp'] = "<b>" . joli_repertoire($dir) . "</b>"; } } } // On ne propose le FTP que si on a des choses a afficher $valeurs['proposer_ftp'] = ($valeurs['_options_upload_ftp'] or $valeurs['_dir_upload_ftp']); if ($galerie) { # passer optionnellement une galerie jointe au form # plus utilise nativement, on prefere la mise a jour # apres upload par ajaxReload('documents') $valeurs['_galerie'] = $galerie; } if ($objet and $id_objet) { $valeurs['id_objet'] = $id_objet; $valeurs['objet'] = $objet; $valeurs['refdoc_joindre'] = ''; if ($valeurs['editable']) { include_spip('inc/autoriser'); $valeurs['editable'] = autoriser('joindredocument', $objet, $id_objet) ? ' ' : ''; } } return $valeurs; }
function base_convert_utf8_dist($titre='', $reprise=false) { if (!$titre) return; // anti-testeur automatique // une liste des tables a convertir, avec le champ dans lequel on // indique '<CONVERT charset>' ; on commence par les rubriques sinon // ca fait desordre dans l'interface privee $tables_a_convertir = array( 'spip_rubriques' => 'titre', 'spip_auteurs' => 'nom', 'spip_articles' => 'titre', 'spip_breves' => 'titre', 'spip_documents' => 'titre', 'spip_forum' => 'titre', 'spip_mots' => 'titre', 'spip_groupes_mots' => 'titre', 'spip_petitions' => 'texte', 'spip_signatures' => 'nom_email', 'spip_syndic' => 'nom_site', 'spip_syndic_articles' => 'titre', 'spip_messages' => 'titre' ); if (!$reprise) convert_utf8_init($tables_a_convertir); echo install_debut_html($titre); echo "<p>", _T('utf8_convert_timeout'), "</p><hr />\n"; // preparer un fichier de sauvegarde au cas ou // on met 'a' car ca peut demander plusieurs rechargements $f = @fopen(_DIR_TMP.'convert_utf8_backup.sql', 'a'); foreach ($tables_a_convertir as $table => $champ) { convert_table_utf8($f, $table, $champ); } if ($f) fclose($f); echo "<p><b>"._T('utf8_convert_termine')."</b></p>"; echo "<p>,"._T('utf8_convert_verifier', array('rep' => joli_repertoire(_DIR_TMP))), '</p>'; // bouton "retour au site" + redirige_par_entete echo "<p style='text-align: right'>", "<a href='", generer_url_ecrire("config_lang"), "'> >> ", _T('icone_retour'),"</a></p>", install_fin_html(); }
function install_etape_4_dist() { // creer le repertoire cache, qui sert partout ! if(!@file_exists(_DIR_CACHE)) { $rep = preg_replace(','._DIR_TMP.',', '', _DIR_CACHE); $rep = sous_repertoire(_DIR_TMP, $rep, true,true); } echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"'); echo info_progression_etape(4,'etape_','install/'); echo "<p>" ._L('Les extensions ci-dessous sont chargées et activées dans le répertoire @extensions@.', array('extensions' => joli_repertoire(_DIR_EXTENSIONS))) ."</p>"; // installer les extensions include_spip('inc/plugin'); $afficher = charger_fonction("afficher_liste",'plugins'); echo $afficher(self(), liste_plugin_files(_DIR_EXTENSIONS),array(), _DIR_EXTENSIONS,'afficher_nom_plugin'); installe_plugins(); echo info_etape(_T('info_derniere_etape'), _T('info_utilisation_spip') ); // mettre a jour si necessaire l'adresse du site // securite si on arrive plus a se loger include_spip('inc/config'); $_POST['adresse_site'] = ''; appliquer_modifs_config(); // aller a la derniere etape qui clos l'install et redirige $suite = "\n<input type='hidden' name='etape' value='fin' />" . bouton_suivant(_T('login_espace_prive')); echo generer_form_ecrire('install', $suite); echo install_fin_html(); }
/** * 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; }
/** * Afficher la liste des librairies presentes * * @return <type> */ function afficher_librairies(){ $res = ""; // Lister les librairies disponibles if ($libs = plugins_liste_librairies()) { $res .= debut_cadre_enfonce('', true, '', _T('plugin_librairies_installees')); ksort($libs); $res .= '<dl>'; foreach ($libs as $lib => $rep) $res .= "<dt>$lib</dt><dd>".joli_repertoire($rep)."</dd>"; $res .= '</dl>'; $res .= fin_cadre_enfonce(true); } return $res; }
function debut_admin($script, $action='', $corps='') { if ((!$action) || (!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 === 'admin_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 { $corps .= "<fieldset><legend>" . _T('info_authentification_ftp') . aide("ftp_auth") . "</legend>\n<label for='fichier'>" . _T('info_creer_repertoire') . "</label>\n" . "<input type='text' class='formo' size='40' id='fichier' name='fichier' value='" . $signal . "' /><br />" . _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='document.forms[0].fichier.value=\"\";barre_inserer(\"$signal\", document.forms[0].fichier)'"; } $form = copy_request($script, $corps, $suivant); $info_action = _T('info_action', array('action' => $action)); return minipres($info_action, $form, $js); } }
function affiche_bloc_plugin($plug_file, $info, $dir_plugins = null) { if (!$dir_plugins) { $dir_plugins = _DIR_PLUGINS; } $prefix = $info['prefix']; $dir = "{$dir_plugins}{$plug_file}/lang/paquet-{$prefix}"; $s = ""; // TODO: le traiter_multi ici n'est pas beau // cf. description du plugin/_stable_/ortho/plugin.xml $description = ""; if (isset($info['description'])) { $description = plugin_propre($info['description'], $dir); } if (isset($info['documentation']) and $lien = $info['documentation']) { $description .= "<p><em class='site'><a href='{$lien}' class='spip_out'>" . _T('en_savoir_plus') . '</a></em></p>'; } $s .= "<dd class='desc'>" . $description . "</dd>\n"; if (isset($info['auteur'])) { if (is_array($info['auteur'])) { $a = formater_credits($info['auteur'], ', '); } else { $a = trim($info['auteur']); } if ($a) { $s .= "<dt class='auteurs'>" . _T('public:par_auteur') . "</dt><dd class='auteurs'>" . PtoBR(propre($a, $dir)) . "</dd>\n"; } } if (isset($info['credit'])) { if ($a = formater_credits($info['credit'], ', ')) { $s .= "<dt class='credits'>" . _T('plugin_info_credit') . "</dt><dd class='credits'>" . PtoBR(propre($a, $dir)) . "</dd>\n"; } } if (isset($info['licence'])) { if (is_array($info['licence'])) { $a = formater_credits($info['licence'], ', '); } else { $a = trim($info['licence']); } if ($a) { $s .= "<dt class='licence'>" . _T('intitule_licence') . "</dt><dd class='licence'>" . PtoBR(propre($a, $dir)) . "</dd>\n"; } } $s = "<dl class='description'>{$s}</dl>"; // // Ajouter les infos techniques // $infotech = array(); $version = "<dt>" . _T('version') . "</dt><dd>" . $info['version']; // Version SVN if ($svn_revision = version_svn_courante($dir_plugins . $plug_file)) { $version .= ($svn_revision < 0 ? ' SVN' : '') . ' [' . abs($svn_revision) . ']'; } $version .= "</dd>"; $infotech[] = $version; $infotech[] = "<dt>" . _T('repertoire_plugins') . "</dt><dd>" . joli_repertoire("{$dir_plugins}{$plug_file}") . "</dd>"; // source zip le cas echeant $infotech[] = (lire_fichier($dir_plugins . $plug_file . '/install.log', $log) and preg_match(',^source:(.*)$,m', $log, $r)) ? '<dt>' . _T('plugin_source') . '</dt><dd>' . trim($r[1]) . "</dd>" : ''; $infotech[] = !$info['necessite'] ? '' : '<dt>' . _T('plugin_info_necessite') . '</dt><dd>' . join(' ', array_map('array_shift', $info['necessite'])) . '</dd>'; $s .= "<dl class='tech'>" . join('', $infotech) . "</dl>"; return $s; }
function afficher_transferer_upload($texte_upload, $dir) { $doc = array('upload' => '<b>' . joli_repertoire($dir) . '</b>'); if (!$texte_upload) { return "\n<div style='border: 1px #303030 solid; padding: 4px; color: #505050;'>" . _T('info_installer_ftp', $doc) . aide("ins_upload") . "</div>"; } else { return "\n<div style='color: #505050;'>" ."<label for='cheminupload'>" . _T('info_selectionner_fichier', $doc) ."</label> :<br />\n" . "\n<select name='chemin' id='cheminupload' size='1' style='width:100%;overflow:hidden;'>" . "<option value=''>>></option>" . $texte_upload . "\n</select>" . "\n<div style='text-align: ". $GLOBALS['spip_lang_right'] . "'><input name='sousaction3' type='submit' value='" . _T('bouton_choisir'). "' /></div>" . "</div>\n"; } }
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); } }
function bouton_telechargement_plugin($url, $rep) { // essayer de creer le repertoire lib/ si on en a le droit if (($rep == 'lib') AND !is_dir(_DIR_RACINE . 'lib')) sous_repertoire(_DIR_RACINE . 'lib','',false,true); if (($rep == 'lib')? is_dir(_DIR_RACINE . 'lib'): (_DIR_PLUGINS_AUTO AND @is_dir(_DIR_PLUGINS_AUTO)) ) $bouton = redirige_action_post('charger_plugin', $rep, // arg = 'lib' ou 'plugins' '', '', "<input type='hidden' name='url_zip_plugin' value='$url' />" ."<input type='submit' name='ok' value='"._T('bouton_telecharger')."' />", 'class="noajax"'); else if ($rep == 'lib'){ $bouton = "<div class='info_todo'>"._T('plugin_info_automatique1_lib')."\n" .'<ol><li>'._T('plugin_info_automatique2',array('rep'=>joli_repertoire(_DIR_RACINE . 'lib/'))).'</li>' .'<li>'._T('plugin_info_automatique3').aide("install0")."</li></ol></div>"; } return _T('plugin_info_telecharger',array('url'=>$url,'rep'=>$rep.'/')).$bouton; }
/** * Affiche un message d’erreur bloquant, indiquant qu’il n’est pas possible de créer * le fichier à cause des droits sur le répertoire parent au fichier. * * Arrête le script PHP par un exit; * * @uses minipres() Pour afficher le message * * @param string $fichier * Chemin du fichier **/ function raler_fichier($fichier) { include_spip('inc/minipres'); $dir = dirname($fichier); http_status(401); echo minipres(_T('texte_inc_meta_2'), "<h4 style='color: red'>" . _T('texte_inc_meta_1', array('fichier' => $fichier)) . " <a href='" . generer_url_ecrire('install', "etape=chmod&test_dir={$dir}") . "'>" . _T('texte_inc_meta_2') . "</a> " . _T('texte_inc_meta_3', array('repertoire' => joli_repertoire($dir))) . "</h4>\n"); exit; }
/** * Commenter l'entete d'un fichier copie * * @param string $source * @param string $content * @return string */ function skeleditor_commente_copie($source,$content){ /* preparer un commenaite */ $comment = _T('skeleditor:copy_comment',array('date'=>date('Y-m-d H:i:s'),'nom'=>$GLOBALS['visiteur_session']['nom'],'source'=>joli_repertoire($source))); $infos = pathinfo($source); if (in_array($infos['extension'],array('php','php3','php4','php5','php6','css','js','as'))) $comment = "/*\n$comment\n*/\n"; elseif ($infos['extension']==_EXTENSION_SQUELETTES AND preg_match(',(<BOUCLE|<INCLU[RD]E|#ENV|#ID_|#REM|#INCLU[RD]E|#TITRE|#[F-Z][A-Z]*),Ums',$content)) $comment = "[(#REM)\n$comment\n]\n"; elseif (in_array($infos['extension'],array('htm','html','xml','svg','rdf'))) $comment = "<!--\n$comment\n-->\n"; else $comment=''; return $comment.$content; }
function export_all_report_size($dest, $rub, $size, $retour) { global $spip_lang_left,$spip_lang_right; // ne pas effrayer inutilement: il peut y avoir moins de fichiers // qu'annonce' si certains etaient vides $n = _T('taille_octets', array('taille' => number_format($size, 0, ' ', ' '))); // cette chaine est a refaire car il y a double ambiguite: // - si plusieurs SPIP dans une base SQL (cf table_prefix) // - si on exporte seulement une rubrique # _T('info_sauvegarde_reussi_02', if ($rub) { $titre = sql_getfetsel('titre', 'spip_rubriques', "id_rubrique=$rub"); $titre = _T('info_sauvegarde_rubrique_reussi', array('archive' => ':<br /><b>'.joli_repertoire($dest)."</b> ($n)", 'titre' => "<b>$titre</b>")); } else $titre = _T('info_sauvegarde_reussi_02', array('archive' => ':<br /><b>'.joli_repertoire($dest)."</b> ($n)")); include_spip('inc/filtres'); return "<p style='text-align: $spip_lang_left'>". $titre . " <a href='" . $retour . "'>". _T('info_sauvegarde_reussi_03') . "</a> " ._T('info_sauvegarde_reussi_04') . "</p>\n" . "<div style='text-align: $spip_lang_right'>" . bouton_action(_T("retour"), $retour) . "</div>" ; }
function exec_admin_tech_args($tables) { $commencer_page = charger_fonction('commencer_page', 'inc'); echo $commencer_page(_T('titre_admin_tech'), "configuration", "base"); echo "<br /><br />"; echo "<div style='text-align: center'>", gros_titre(_T('titre_admin_tech'),'',false), '</div>'; if ($GLOBALS['connect_toutes_rubriques']) { echo barre_onglets("administration", "sauver") . "<br />"; echo debut_gauche('',true); echo debut_boite_info(true); echo _T('info_gauche_admin_tech'); echo fin_boite_info(true); $repertoire = _DIR_DUMP; if (!@file_exists($repertoire) AND !$repertoire = sous_repertoire(_DIR_DUMP,'',false,true) ) { $repertoire = preg_replace(','._DIR_TMP.',', '', _DIR_DUMP); $repertoire = sous_repertoire(_DIR_TMP, $repertoire); } $dir_dump = $repertoire; } else { echo debut_gauche('', true); $dir_dump = determine_upload(); } echo debut_droite('',true); // // Sauvegarde de la base // // a passer en fonction if (substr(_DIR_IMG, 0, strlen(_DIR_RACINE)) === _DIR_RACINE) $dir_img = substr(_DIR_IMG,strlen(_DIR_RACINE)); else $dir_img = _DIR_IMG; $dir_dump = joli_repertoire($dir_dump); $res = "\n<p>" . http_img_pack('warning.gif', _T('info_avertissement'), "style='width: 48px; height: 48px; float: right;margin: 10px;'") . _T('texte_admin_tech_01', array('dossier' => '<i>'.$dir_dump.'</i>', 'img'=>'<i>'.$dir_img.'</i>')) . ' ' . _T('texte_admin_tech_02', array('spipnet' => $GLOBALS['home_server'] . '/' . $GLOBALS['spip_lang'] . '_article1489.html' )) . "</p>"; $file = nom_fichier_dump(); $chercher_rubrique = charger_fonction('chercher_rubrique', 'inc'); $form = $chercher_rubrique(0, $GLOBALS['connect_id_rubrique'] ? 'breve' : 'rubrique', $GLOBALS['connect_id_rubrique'], 0, 'admin_tech'); if ($form) { if (preg_match('@^<select([^>]*)>(\s*<option[^>]*)>([^[<]+)(.*)$@s', $form, $r)) { if (!strpos($r[2], 'selected=')) $r[2] .= " selected='selected'"; $form = "<select onchange='x=this.options[this.options.selectedIndex].firstChild.data.match(/\w+/); findObj_forcer(\"znom_sauvegarde\").value=x[0]; findObj_forcer(\"nom_sauvegarde\").value=x[0];'" . $r[1] . '>' . $r[2] . '>' . $r[3] . $r[4]; if ($GLOBALS['connect_id_rubrique']) $file = trim($r[3]); } elseif (preg_match('@^<input[^>]*>([^[<]+)@', $form, $r)) if ($GLOBALS['connect_id_rubrique']) $file = trim($r[1]); $res .= "\n<label for='id_parent'>" . _T('texte_admin_tech_04') . "</label><br /><br />\n" . $form . '<br /><br />'; } $nom = "\n<input name='nom_sauvegarde' id='nom_sauvegarde' size='40' value='$file' />"; $znom = "\n<input name='znom_sauvegarde' id='znom_sauvegarde' size='40' value='$file' />"; $res .= _T('texte_admin_tech_03') . "\n<ul>" . "\n<li style='list-style:none;'><input type='radio' name='gz' value='1' id='gz_on' checked='checked' /><label for='gz_on'> " . _T('bouton_radio_sauvegarde_compressee', array('fichier'=>'')) . " </label><br />\n" . '<b>' . $dir_dump . "</b>" . $znom . "<b>.xml.gz</b></li>" . "\n<li style='list-style:none;'><input type='radio' name='gz' value='0' id='gz_off' /><label for='gz_off'>" . _T('bouton_radio_sauvegarde_non_compressee', array('fichier'=>'')) . '</label><br /><b>' . $dir_dump . "</b>$nom<b>.xml</b></li></ul>\n" . "\n<input type='hidden' name='reinstall' value='non' />"; if (!$GLOBALS['connect_toutes_rubriques']) foreach($tables as $k => $v) if (!strpos($v, 'checked')) unset($tables[$k]); $bloc = "<h3>"._T('install_tables_base')."</h3>" . "\n<ol style='spip'><li>\n" . join("</li>\n<li>", $tables) . "</li></ol>\n"; $bloc = block_parfois_visible('export_tables', _T('info_options_avancees'), $bloc, '', false); echo debut_cadre_trait_couleur('',true,'',_T('texte_sauvegarde'),'sauvegarder'), generer_form_ecrire('export_all', $res . $bloc, '', _T('texte_sauvegarde_base')), fin_cadre_trait_couleur(true); // // Restauration de la base // // restaurer est equivalent a detruire, ou pas (cas des restaurations partielles, a affiner ?) if (autoriser('detruire')) { echo debut_cadre_trait_couleur('',true,'', _T('texte_restaurer_base'),'restaurer'); echo admin_sauvegardes($dir_dump, _request('tri')); echo fin_cadre_trait_couleur(true); // // Lien vers la reparation // if (!_request('reinstall') AND version_compare(sql_version(),'3.23.14','>=')) { $res = "\n<p style='text-align: justify;'>". _T('texte_crash_base') . "\n</p>"; echo debut_cadre_trait_couleur('',true,'',_T('texte_recuperer_base'),'reparer'), generer_form_ecrire('admin_repair', $res, '', _T('bouton_tenter_recuperation')), fin_cadre_trait_couleur(true); } } echo "<br />"; echo fin_gauche(), fin_page(); }
function accesrestreint_htpasswd_config() { global $spip_lang_right; include_spip('inc/acces'); ecrire_acces(); echo debut_cadre_trait_couleur("cadenas-24.gif", true, "", _T('info_fichiers_authent')); $creer_htpasswd = $GLOBALS['meta']["creer_htpasswd"]; echo "<div class='verdana2'>", _T('texte_fichier_authent', array('dossier' => '<tt>'.joli_repertoire(_DIR_TMP).'</tt>')), "</div>"; echo "<div class='verdana2'>"; echo afficher_choix('creer_htpasswd', $creer_htpasswd, array('oui' => _T('item_creer_fichiers_authent'), 'non' => _T('item_non_creer_fichiers_authent')), ' '); echo "</div>"; echo "<div style='text-align:$spip_lang_right'><input type='submit' value='"._T('bouton_valider')."' class='fondo' /></div>"; echo fin_cadre_trait_couleur(true); }