示例#1
0
/**
 * 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);
}
示例#2
0
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();
}
示例#3
0
/**
 * 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();
    }
}
示例#4
0
文件: etape_4.php 项目: nursit/SPIP
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();
}
示例#5
0
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;
}
示例#6
0
/**
 * 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;
}
示例#7
0
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>"
			)
		);
}
示例#8
0
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();
}
示例#9
0
/**
 * 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;
}
示例#10
0
/**
 * 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;
}
示例#11
0
/**
 * 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;
}
示例#12
0
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;
}
示例#13
0
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"), "'> &gt;&gt; ",
	  _T('icone_retour'),"</a></p>",
	  install_fin_html();
}
示例#14
0
文件: etape_4.php 项目: rhertzog/lcs
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&#233;es et activ&#233;es dans le r&#233;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();
}
示例#15
0
/**
 * 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;
}
示例#16
0
/**
 * 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;
}
示例#17
0
文件: admin.php 项目: rhertzog/lcs
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);
	}
}
示例#18
0
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;
}
示例#19
0
文件: joindre.php 项目: rhertzog/lcs
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>&nbsp;:<br />\n" .
		"\n<select name='chemin' id='cheminupload' size='1' style='width:100%;overflow:hidden;'>"
		. "<option value=''>&gt;&gt;</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";
	}
}
示例#20
0
文件: admin.php 项目: genma/spip_ynh
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);
    }
}
示例#21
0
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;

}
示例#22
0
/**
 * 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;
}
示例#23
0
/**
 * 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;
}
示例#24
0
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>" ;
}
示例#25
0
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>')) .
	 '&nbsp;' .
	 _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();
}
示例#26
0
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')),
		' &nbsp; ');
	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);
}