/**
 * Action de mise à jour des descriptions d'un dépot
 *
 * @return array
 *     Liste identifiant du dépot, texte d'erreur éventuel
 **/
function action_editer_depot_dist()
{
    $securiser_action = charger_fonction('securiser_action', 'inc');
    $arg = $securiser_action();
    // Verification des autorisations
    if (!autoriser('webmestre')) {
        include_spip('inc/minipres');
        echo minipres();
        exit;
    }
    // Le depot n'est jamais cree par une edition mais via le formulaire ajouter_depot
    // On est toujours en presence d'une mise a jour pour cette action, l'id_depot
    // doit donc etre renseigne sinon c'est une erreur
    if ($id_depot = intval($arg)) {
        // On teste si l'auteur est connecte. Si non on renvoie sur le formulaire login
        $id_auteur = $GLOBALS['visiteur_session']['id_auteur'];
        if (!$id_auteur) {
            include_spip('inc/headers');
            redirige_url_ecrire();
        }
        // On met a jour le depot avec les saisies
        if (sql_updateq('spip_depots', array('titre' => _request('titre'), 'descriptif' => _request('descriptif'), 'type' => _request('type')), 'id_depot=' . sql_quote($id_depot))) {
        }
        // Enregistre l'envoi dans la BD
        // Dans le cas du depot rien n'est fait actuellement, on garde cette fonction
        // par souci de coherence avec les autres editions d'objet et pour usage futur
        $err = depots_set($id_depot);
        if (!$err) {
            spip_log("ACTION MODIFIER DEPOT (manuel) : id_depot = " . $id_depot, 'svp_actions.' . _LOG_INFO);
        }
    }
    return array($id_depot, $err);
}
Exemple #2
0
function forum_envoi(
		     $id,
		     $id_parent,
		     $script,
		     $statut,
		     $titre_message,
		     $texte,
		     $modif_forum,
		     $nom_site,
		     $url_site)
{
	if ($modif_forum == 'fin') {
		include_spip('inc/headers');
		$script = preg_replace('/\W/','', $script); // article etc
		$objet = preg_replace('/\W/','', $texte); // id_article etc
		redirige_url_ecrire('discuter', "script=$script&objet=$objet&$objet=$id&statut=$statut" . ($id_parent ? "&id_parent=$id_parent" : ''));
	} else {
		$statut = preg_replace('/\W/','', $statut);
		$forum_envoi = charger_fonction('forum_envoi', 'inc');
		$forum_envoi = $forum_envoi($id, $id_parent, $script, $statut, $titre_message, $texte, $modif_forum, $nom_site, $url_site);

		if (_AJAX) {
			ajax_retour($forum_envoi);
		} else {
			$titre = $script == 'message' ? _T('onglet_messagerie') : _T('titre_cadre_forum_interne');
			$commencer_page = charger_fonction('commencer_page', 'inc');
			echo $commencer_page(_T('texte_nouveau_message'), "accueil", "accueil");
			echo debut_gauche('', true);
			echo debut_droite('', true);
			echo gros_titre($titre,'', false);
			echo $forum_envoi, fin_gauche(), fin_page();
		}
	}
}
Exemple #3
0
function action_editer_rubrique_dist($arg=null) {

	if (is_null($arg)){
		$securiser_action = charger_fonction('securiser_action', 'inc');
		$arg = $securiser_action();
	}

	if (!$id_rubrique = intval($arg)) {
		if ($arg != 'oui') {
			include_spip('inc/headers');
			redirige_url_ecrire();
		}
		$id_rubrique = insert_rubrique(_request('id_parent'));
	}

	revisions_rubriques($id_rubrique);

	if (_request('redirect')) {
		$redirect = parametre_url(
			urldecode(_request('redirect')),
			'id_rubrique', $id_rubrique, '&');
	
		include_spip('inc/headers');
		redirige_par_entete($redirect);
	}
	else 
		return array($id_rubrique,'');
}
Exemple #4
0
/**
 * 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;
            }
        }
    }
}
/**
 * Affiche l'étape 0 d'installation : écran d'accueil.
 *
 * @uses info_copyright()
 **/
function install_etape__dist()
{
    utiliser_langue_visiteur();
    $menu_langues = menu_langues('var_lang_ecrire');
    if (!$menu_langues) {
        redirige_url_ecrire('install', "etape=chmod");
    } else {
        include_spip('inc/presentation');
        // pour info_copyright
        $res = "<div class='petit-centre'><img alt='SPIP' src='" . chemin_image('logo-spip2.gif') . "' />\n" . "<p class='small'>" . info_copyright() . "</p></div>\n" . "<p>" . _T('install_select_langue') . "</p>" . "<div>" . $menu_langues . "</div>\n" . generer_form_ecrire('install', "<input type='hidden' name='etape' value='chmod' />" . bouton_suivant());
        echo minipres('AUTO', $res);
    }
}
Exemple #6
0
function exec_delete_statistiques_dist()
{
	include_spip('inc/autoriser');
	if (!autoriser('detruire','statistiques')) {
		include_spip('inc/minipres');
		echo minipres();
	} else {
		include_spip('inc/headers');
		$admin = charger_fonction('admin', 'inc');
		$res = $admin('delete_statistiques', _T('bouton_effacer_statistiques'), '');
		if ($res) echo $res; else redirige_url_ecrire('statistiques_visites','');
		
	}
}
Exemple #7
0
function exec_upgrade_dist()
{
    global $spip_version_base;
    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 ($spip_version_base < $GLOBALS['meta']['version_installee']) {
            $commentaire = _T('info_mise_a_niveau_base_2');
        } else {
            $commentaire = _T('texte_mise_a_niveau_base_1');
        }
        $commentaire .= "<br />[" . $GLOBALS['meta']['version_installee'] . "/" . $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);
        }
    }
}
Exemple #8
0
function exec_upgrade_dist() {

	global $spip_version_base;
	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;
	} 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 ($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');

	$_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 {
		$res = redirige_action_auteur('purger', 'cache', 'accueil', '', true);
		redirige_par_entete($res);
	}
	}
}
Exemple #9
0
function action_editer_breve_dist($arg=null) {

	if (is_null($arg)){
		$securiser_action = charger_fonction('securiser_action', 'inc');
		$arg = $securiser_action();
	}

	// Envoi depuis les boutons "publier/supprimer cette breve"
	if (preg_match(',^(\d+)\Wstatut\W(\w+)$,', $arg, $r)) {
		$id_breve = $r[1];
		set_request('statut', $r[2]);
		revisions_breves($id_breve);
	} 
	// Envoi depuis le formulaire d'edition pour chgt de langue
	else if (preg_match(',^(\d+)\W(\w+)$,', $arg, $r)) {
		revisions_breves_langue($id_breve=$r[1], $r[2], _request('changer_lang'));
	}
	// Envoi depuis le formulaire d'edition d'une breve existante
	else if ($id_breve = intval($arg)) {
		revisions_breves($id_breve);
	}
	// Envoi depuis le formulaire de creation d'une breve
	else if ($arg == 'oui') {
		$id_breve = insert_breve(_request('id_parent'));
		if ($id_breve) revisions_breves($id_breve);
	} 
	// Erreur
	else{
		include_spip('inc/headers');
		redirige_url_ecrire();
	}

	if (_request('redirect')) {
		$redirect = parametre_url(urldecode(_request('redirect')),
			'id_breve', $id_breve, '&');
			
		include_spip('inc/headers');
		redirige_par_entete($redirect);
	}
	else 
		return array($id_breve,'');
}
function action_instituer_rubrique_breves_dist() {

	$securiser_action = charger_fonction('securiser_action', 'inc');
	$arg = $securiser_action();

	list($id, $statut) = preg_split('/\W/', $arg);
	$id = intval($id);

	include_spip('action/editer_breve');

	$table = 'articles';
	$key = 'id_article';

	$voss = sql_select("$key AS id", "spip_$table", "id_rubrique=$id AND (statut = 'publie' OR statut = 'prop')");

	while($row = sql_fetch($voss)) {
		set_request('statut', $statut);
		revisions_breves($row['id']);
	}

	redirige_url_ecrire('meme_rubrique', "id=$id&type=breve&order=date_heure");
}
Exemple #11
0
function action_editer_petition_dist($arg = null)
{
    if (is_null($arg)) {
        $securiser_action = charger_fonction('securiser_action', 'inc');
        $arg = $securiser_action();
    }
    // si id_petition n'est pas un nombre, c'est une creation
    // mais on verifie qu'on a toutes les donnees qu'il faut.
    if (!($id_petition = intval($arg))) {
        $id_article = _request('id_article');
        if (!$id_article) {
            include_spip('inc/headers');
            redirige_url_ecrire();
        }
        $id_petition = petition_inserer($id_article);
    }
    // Enregistre l'envoi dans la BD
    if ($id_petition > 0) {
        $err = petition_modifier($id_petition);
    }
    return array($id_petition, $err);
}
Exemple #12
0
function install_etape_fin_dist()
{
	ecrire_acces();

	$f = str_replace( _FILE_TMP_SUFFIX, '.php', _FILE_CHMOD_TMP);
	if (file_exists(_FILE_CHMOD_TMP)) {
		if (!@rename(_FILE_CHMOD_TMP, $f)) {
			if (@copy(_FILE_CHMOD_TMP, $f))
				spip_unlink(_FILE_CHMOD_TMP);
		}
	}

	$f = str_replace( _FILE_TMP_SUFFIX, '.php', _FILE_CONNECT_TMP);
	if (file_exists(_FILE_CONNECT_TMP)) {
		spip_log("renomme $f");
		if (!@rename(_FILE_CONNECT_TMP, $f)) {
			if (@copy(_FILE_CONNECT_TMP, $f))
				@spip_unlink(_FILE_CONNECT_TMP);
		}
	}

	// creer le repertoire cache, qui sert partout !
	// deja fait en etape 4 en principe, on garde au cas ou
	if(!@file_exists(_DIR_CACHE)) {
		$rep = preg_replace(','._DIR_TMP.',', '', _DIR_CACHE);
		$rep = sous_repertoire(_DIR_TMP, $rep, true,true);
	}

	// Verifier la securite des htaccess
	// Si elle ne fonctionne pas, prevenir
	$msg = install_verifier_htaccess();
	if ($msg) {
		$cible = _T('public:accueil_site');
		$cible = generer_form_ecrire('accueil', '','', $cible);
		echo minipres('AUTO', $msg . $cible);
	// ok, deboucher dans l'espace prive
	} else redirige_url_ecrire('accueil');
}
Exemple #13
0
function etape_ldap5_save()
{
    if (!@file_exists(_FILE_CONNECT_TMP)) {
        redirige_url_ecrire('install');
    }
    ecrire_meta('ldap_statut_import', _request('statut_ldap'));
    lire_fichier(_FILE_CONNECT_TMP, $conn);
    if ($p = strpos($conn, "'');")) {
        ecrire_fichier(_FILE_CONNECT_TMP, substr($conn, 0, $p + 1) . _FILE_LDAP . substr($conn, $p + 1));
    }
    $adresse_ldap = addcslashes(_request('adresse_ldap'), "'\\");
    $login_ldap = addcslashes(_request('login_ldap'), "'\\");
    $pass_ldap = addcslashes(_request('pass_ldap'), "'\\");
    $port_ldap = addcslashes(_request('port_ldap'), "'\\");
    $tls_ldap = addcslashes(_request('tls_ldap'), "'\\");
    $protocole_ldap = addcslashes(_request('protocole_ldap'), "'\\");
    $base_ldap = addcslashes(_request('base_ldap'), "'\\");
    $base_ldap_text = addcslashes(_request('base_ldap_text'), "'\\");
    $conn = "\$GLOBALS['ldap_base'] = '{$base_ldap}';\n" . "\$GLOBALS['ldap_link'] = @ldap_connect('{$adresse_ldap}','{$port_ldap}');\n" . "@ldap_set_option(\$GLOBALS['ldap_link'],LDAP_OPT_PROTOCOL_VERSION,'{$protocole_ldap}');\n" . ($tls_ldap != 'oui' ? '' : "@ldap_start_tls(\$GLOBALS['ldap_link']);\n") . "@ldap_bind(\$GLOBALS['ldap_link'],'{$login_ldap}','{$pass_ldap}');\n";
    $champs = is_array($GLOBALS['ldap_attributes']) ? $GLOBALS['ldap_attributes'] : array();
    $res = '';
    foreach ($champs as $champ => $v) {
        $nom = 'ldap_' . $champ;
        $val = trim(_request($nom));
        if (preg_match('/^\\w*$/', $val)) {
            if ($val) {
                $val = _q($val);
            }
        } else {
            $val = "array(" . _q(preg_split('/\\W+/', $val)) . ')';
        }
        if ($val) {
            $res .= "'{$champ}' => " . $val . ",";
        }
    }
    $conn .= "\$GLOBALS['ldap_champs'] = array({$res});\n";
    install_fichier_connexion(_DIR_CONNECT . _FILE_LDAP, $conn);
}
Exemple #14
0
function action_editer_article_dist($arg=null) {

	if (is_null($arg)){
		$securiser_action = charger_fonction('securiser_action', 'inc');
		$arg = $securiser_action();
	}

	// si id_article n'est pas un nombre, c'est une creation
	// mais on verifie qu'on a toutes les donnees qu'il faut.
	if (!$id_article = intval($arg)) {
		$id_parent = _request('id_parent');
		$id_auteur = $GLOBALS['visiteur_session']['id_auteur'];
		if (!($id_parent AND $id_auteur)) {
			include_spip('inc/headers');
			redirige_url_ecrire();
		}
		if (($id_article = insert_article($id_parent)) > 0)

		# cf. GROS HACK ecrire/inc/getdocument
		# rattrapper les documents associes a cet article nouveau
		# ils ont un id = 0-id_auteur

			sql_updateq("spip_documents_liens", array("id_objet" => $id_article), array("id_objet = ".(0-$id_auteur),"objet='article'"));
	}

	// Enregistre l'envoi dans la BD
	if ($id_article > 0) $err = articles_set($id_article);

	if (_request('redirect')) {
		$redirect = parametre_url(urldecode(_request('redirect')),
			'id_article', $id_article, '&') . $err;

		include_spip('inc/headers');
		redirige_par_entete($redirect);
	}
	else
		return array($id_article,$err);
}
Exemple #15
0
function formulaires_ecatalogue_currency_traiter_dist($id_currency)
{
    $result = array();
    $mdl = new CurrencyModel();
    if (_request('delete_currency')) {
        if ($mdl->delete_by_id($id_currency)) {
            pdk_set_message_ok(_T('ecatalogue:form_deleted'));
            //$result['message_ok'] = _T('sport:form_deleted');
        } else {
            pdk_set_message_error(_T('ecatalogue:form_error'));
            //$result['message_erreur'] = _T('sport:form_error');
        }
        include_spip('inc/headers');
        redirige_url_ecrire('ecatalogue_currencies');
    } else {
        $data = $mdl->form_data_from_array($_REQUEST);
        if ($mdl->update_by_id($id_currency, $data, true)) {
            $result['message_ok'] = _T('ecatalogue:form_saved');
        } else {
            $result['message_erreur'] = _T('ecatalogue:form_error');
        }
    }
    return $result;
}
if (!defined('_OUTILS_DEVELOPPEURS')) {
    /** Activer des outils pour développeurs ? */
    define('_OUTILS_DEVELOPPEURS', false);
}
// charger systematiquement inc/autoriser dans l'espace restreint
if (test_espace_prive()) {
    include_spip('inc/autoriser');
}
//
// Installer Spip si pas installe... sauf si justement on est en train
//
if (!(_FILE_CONNECT or autoriser_sans_cookie(_request('exec')) or _request('action') == 'cookie' or _request('action') == 'converser' or _request('action') == 'test_dirs')) {
    // Si on peut installer, on lance illico
    if (test_espace_prive()) {
        include_spip('inc/headers');
        redirige_url_ecrire("install");
    } else {
        // Si on est dans le site public, dire que qq s'en occupe
        include_spip('inc/minipres');
        utiliser_langue_visiteur();
        echo minipres(_T('info_travaux_titre'), "<p style='text-align: center;'>" . _T('info_travaux_texte') . "</p>");
        exit;
    }
    // autrement c'est une install ad hoc (spikini...), on sait pas faire
}
// memoriser un tri sessionne eventuel
if (isset($_REQUEST['var_memotri']) and $t = $_REQUEST['var_memotri'] and (strncmp($t, 'trisession', 10) == 0 or strncmp($t, 'senssession', 11) == 0)) {
    if (!function_exists('session_set')) {
        include_spip('inc/session');
    }
    session_set($t, _request($t));
Exemple #17
0
function action_charger_plugin_dist() {
	global $spip_lang_left;

	$securiser_action = charger_fonction('securiser_action', 'inc');
	$arg = $securiser_action();

	include_spip('inc/minipres');
	include_spip('inc/charger_plugin');

	// droits : il faut avoir le droit de choisir les plugins,
	// mais aussi d'en ajouter -- a voir
	include_spip('inc/autoriser');
	if (!autoriser('configurer', 'plugins')) {
		echo minipres();
		exit;
	}

	if ($arg == 'update_flux') {
		if (is_array($syndic_plug = @unserialize($GLOBALS['meta']['syndic_plug'])))
			foreach ($syndic_plug as $url => $c)
				essaie_ajouter_liste_plugins($url);
	} 
	elseif ($arg == 'supprimer_flux' AND $url = _request('supprimer_flux')) {
		$syndic_plug = @unserialize($GLOBALS['meta']['syndic_plug']);
		unset($syndic_plug[$url]);
		ecrire_meta('syndic_plug', serialize($syndic_plug));
	}
	elseif (in_array($arg,array('charger_zip','lib','plugins'))) {
		// la verification que c'est bien un zip sera faite apres
		$zip = _request('url_zip_plugin');
	}
	elseif (strlen($arg)) {
		// la verification que c'est bien un zip sera faite apres
		$zip = $arg;
	}
	else {
		// indetermine : c'est un zip ou une liste
		$arg = 'charger_liste_ou_zip';
		$zip = _request('url_zip_plugin2');
	}

	# si premiere lecture, destination temporaire des fichiers
	$tmp = sous_repertoire(_DIR_CACHE, 'chargeur');
	# on ne se contenten pas du basename qui peut etre un simple v1
	# exemple de l'url http://nodeload.github.com/kbjr/Git.php/zipball/v0.1.1-rc

	$fichier = (_request('fichier')?
		_request('fichier')
		:"h".substr(md5($zip),0,8)."-".basename($zip)
		);
	# basename par securite notamment dans le cas ou $fichier viens de l'exterieur
	$fichier = $tmp.basename($fichier);
	$extension = ""; // a verifier

	# au second tour, le zip designe directement le fichier au lieu de l'url
	# initiale
	if (!file_exists($fichier)) {
		# si on ne dispose pas encore du fichier
		# verifier que le zip en est bien un (sans se fier a son extension)
		#	en chargeant son entete car l'url initiale peut etre une simple
		# redirection et ne pas comporter d'extension .zip
		include_spip('inc/distant');
		$head = recuperer_page($zip, false, true, 0);

		if (preg_match(",^Content-Type:\s*application/zip$,Uims",$head))
			$extension = "zip";
		elseif (preg_match(',^Content-Disposition:\s*attachment;\s*filename="?([^"]+)"?$,Uims',$head,$m)){
			$f = $m[1];
			if (pathinfo($f, PATHINFO_EXTENSION)=="zip"){
				$fichier = (_request('fichier')?
					_request('fichier')
					:"h".substr(md5($zip),0,8)."-".basename($f)
					);
				$fichier = $tmp.basename($fichier);
				$extension = "zip";
			}
		}
		// au cas ou, si le content-type n'est pas la
		// mais que l'extension est explicite
		elseif(pathinfo($zip, PATHINFO_EXTENSION)=="zip")
			$extension = "zip";

		# si ce n'est pas un zip dans un format connu,
		# c'est sans doute une liste de plugins
		# si on est dans le bon scenario
		if (!$extension) {
			if ($arg == 'charger_liste_ou_zip') {
				essaie_ajouter_liste_plugins($zip);
			}
		}
	}
	else {
		$extension = pathinfo($fichier, PATHINFO_EXTENSION);
		if (!$extension)
			$extension = pathinfo($zip, PATHINFO_EXTENSION);
	}
	# format de fichier inconnu
	if (!$extension) {
		spip_log("Extension inconnue pour le paquet $fichier venant de $zip");
		include_spip('inc/headers');
		redirige_url_ecrire('charger_plugin');
	}

	# Si definie a '', le chargeur est interdit ; mais on n'aurait de toutes
	# facons jamais pu venir ici avec toutes les securisations faites :^)
	if (!_DIR_PLUGINS_AUTO) die('jamais');

	# dispose-t-on du fichier ?
	$status = null;
	# forcer l'extension du fichier par securite
	$fichier = $tmp.basename($fichier,".$extension").".$extension";
	if (!@file_exists($fichier)) {
		include_spip('inc/distant');
		$contenu = recuperer_page($zip, $fichier, false,_COPIE_LOCALE_MAX_SIZE);
		if (!$contenu) {
			spip_log('charger_decompresser impossible de charger '.$zip);
			$status = -1;
		}
	}

	if ($status === null) {
		$status = chargeur_charger_zip(
			array(
				'zip' => $zip,
				'arg' => $arg,
				'fichier' => $fichier,
				'tmp' => $tmp,
				'extract' => _request('extract')
			)
		);
		if (_request('extract')) {
			spip_unlink($fichier);
		}
	}

	// Vers quoi pointe le bouton "suite"
	$suite = '';

	// le fichier .zip est la et bien forme
	if (is_array($status)) {

		// Reconnaitre un plugin par son fichier xml
		$get_infos = charger_fonction('get_infos','plugins');
		$infos = $get_infos($status['tmpname'], true, '');
		if ($infos) {
			$nom = $infos['nom'];
			$image = $infos['icon'];
			$description = $infos['description'];
			$type = 'plugin';
			$dest = _DIR_PLUGINS_AUTO;
		} else {
			$type = 'lib';
			$dest = _DIR_RACINE.'lib/';
		}

		// Fixer son emplacement final
		$status['dirname'] = $dest
			. basename($status['tmpname']) . '/';

		// repertoire parent accessible en ecriture ?
		if (!@is_dir($dest)
		OR !@is_writeable($dest)) {
			$retour = _T("erreur");
			$texte = "<p>"._T('plugin_erreur_droit1',array('dest'=>$dest))."</p>"
			  . "<p>"._T('plugin_erreur_droit2').aide('install0')."</p>";
		}
		else

		// C'est un plugin ?
		if ($type == 'plugin') {

			$retour = typo($nom);

			// l'icone ne peut pas etre dans tmp/ (lecture http oblige)
			// on la copie donc dans local/chargeur/
			if ($image) {
				$dir = sous_repertoire(_DIR_VAR,'chargeur');
				@copy($status['tmpname'].'/'.$image, $image2 = $dir.basename($image));
				$retour = "<img src='".$image2."' style='float:right;' />"
					. $retour;
			} else 
				$retour = "<img src='".find_in_path('images/plugin-24.gif')."' style='float:right;' />"
					. $retour;

			if (_request('extract')) {
				$afficher = charger_fonction('afficher_plugin','plugins'); // pour plugin_propre
				$texte = plugin_propre($description)
				. '<p>'._T('plugin_zip_installe_finie',array('zip'=>$zip)).'</p>'
				. "<h2 style='text-align:center;'>"._T('plugin_zip_active')."</h2>";
			} else {
                $texte = '<p>'._T('plugin_zip_telecharge',array('zip'=>$zip)).'</p>';
				$texte .= liste_fichiers_pclzip($status);
				$texte .= "<h2 style='text-align:center;'>"._T('plugin_zip_installer')."</h2>";
				$suite = 'plugins';
			}
		}

		// C'est un paquet quelconque
		else {
		  $retour = _T('plugin_charge_paquet',array('name' => basename($status['tmpname'])));

			if (_request('extract')) {
			  $texte = '<p>'._T('plugin_zip_installe_rep_finie', array('zip'=>$zip, 'rep'=>$status['dirname'])).'</p>';
			} else {
                $texte = "<p>"._T('plugin_zip_telecharge',array('zip'=>$zip))."</p>\n";
				$texte .= liste_fichiers_pclzip($status);
				$suite = 'lib';
			}
		}
	}

	// fichier absent
	else if ($status == -1) {
		$retour = _T('erreur');
		$texte = _T('plugin_erreur_charger', array('zip'=>$zip));
	}

	// fichier la mais pas bien dezippe
	else {
		$retour = _T('erreur');
		$texte = _T('plugin_erreur_zip',array('status'=>$status));
	}


	include_spip('inc/install'); // pour bouton_suivant()

	$texte = "<div style='text-align:$spip_lang_left;'>$texte</div>\n";

	$redirect = rawurldecode(_request('redirect'));
	// par defaut on revient sur la page admin_plugin
	if($redirect == _DIR_RESTREINT OR $redirect == "./"){
		$redirect_annul = generer_url_ecrire('admin_plugin');
		$redirect_form = 'admin_plugin&voir=recents&'.$type.'='.preg_replace(',^[^/]+/|/$,', '', $status['dirname']);
		$redirect_action = '';
	}
	else{
		$redirect_annul = $redirect;
		$redirect_form = preg_replace(',^.*exec\=,', '', $redirect);
		if (!$suite)
			$texte .= form_hidden(parametre_url(generer_url_ecrire($redirect_form), $type,preg_replace(',^[^/]+/|/$,', '', $status['dirname'])));
		$redirect_action = $redirect_form;
	}
	echo minipres($retour." ",
		$suite
			? redirige_action_post(_request('action'),
				$suite,
				$redirect_action,
				'',
					form_hidden('?url_zip_plugin='.urlencode($zip).'&extract=oui&fichier='.urlencode($fichier))
					.$texte
					."<a class='suivant' href='"
						.$redirect_annul
					."'>"._T('bouton_annuler')."</a>"
				.bouton_suivant())
			: generer_form_ecrire($redirect_form, $texte . bouton_suivant())
	);
	exit;

	// 0 = rien, pas charge
	// liste de fichiers = retour gagnant
	// < 0 = erreur pclzip 
	// ----- Error codes
	//   -1 : Unable to open file in binary write mode
	//   -2 : Unable to open file in binary read mode
	//   -3 : Invalid parameters
	//   -4 : File does not exist
	//   -5 : Filename is too long (max. 255)
	//   -6 : Not a valid zip file
	//   -7 : Invalid extracted file size
	//   -8 : Unable to create directory
	//   -9 : Invalid archive extension
	//  -10 : Invalid archive format
	//  -11 : Unable to delete file (unlink)
	//  -12 : Unable to rename file (rename)
	//  -13 : Invalid header checksum
	//  -14 : Invalid archive size

#	redirige_par_entete($url_retour);
}
Exemple #18
0
function action_editer_message_post_nouveau($type, $dest='', $rv='')
{

	$id_auteur = $GLOBALS['visiteur_session']['id_auteur'];

	$mydate = date("YmdHis", time() - 2 * 24 * 3600);
	sql_delete("spip_messages", "(statut = 'redac') AND (date_heure < $mydate)");

	if ($type == 'pb') $statut = 'publie';
	else $statut = 'redac';

	$titre = filtrer_entites(_T('texte_nouveau_message'));

	$vals = array('titre' => $titre,
		      'statut' => $statut,
		      'type' => $type,
		      'id_auteur' => $id_auteur);

	if (!$rv)
		$vals['date_heure'] = date('Y-m-d H:i:s');
	else {
		$vals['date_heure'] = "$rv 12:00:00";
		$vals['date_fin'] = "$rv 13:00:00";
		$vals['rv'] = 'oui';
	}

	$id_message = sql_insertq("spip_messages", $vals);

	if ($type != "affich"){
		sql_insertq('spip_auteurs_messages',
		   array('id_auteur' => $id_auteur,
			 'id_message' => $id_message,
			 'vu' =>'oui'));
		if ($dest) {
			sql_insertq('spip_auteurs_messages',
				    array('id_auteur' => $dest,
					  'id_message' => $id_message,
					  'vu' =>'non'));
		}
	}

	redirige_url_ecrire('message_edit', "id_message=$id_message&new=oui&dest=$dest");
}
Exemple #19
0
function install_etape_3_dist()
{
    $ldap_present = _request('ldap_present');
    if (!$ldap_present) {
        $adresse_db = defined('_INSTALL_HOST_DB') ? _INSTALL_HOST_DB : _request('adresse_db');
        $login_db = defined('_INSTALL_USER_DB') ? _INSTALL_USER_DB : _request('login_db');
        $pass_db = defined('_INSTALL_PASS_DB') ? _INSTALL_PASS_DB : _request('pass_db');
        $server_db = defined('_INSTALL_SERVER_DB') ? _INSTALL_SERVER_DB : _request('server_db');
        $chmod_db = defined('_SPIP_CHMOD') ? _SPIP_CHMOD : _request('chmod');
        $choix_db = defined('_INSTALL_NAME_DB') ? _INSTALL_NAME_DB : _request('choix_db');
        $sel_db = $choix_db == "new_spip" ? _request('table_new') : $choix_db;
        $res = install_bases($adresse_db, $login_db, $pass_db, $server_db, $choix_db, $sel_db, $chmod_db);
        if ($res) {
            $res = info_progression_etape(2, 'etape_', 'install/', true) . "<div class='error'><h3>" . _T('avis_operation_echec') . "</h3>" . $res . "<p>" . _T('texte_operation_echec') . "</p>" . "</div>";
        }
    } else {
        $res = '';
        list($adresse_db, $login_db, $pass_db, $sel_db, $server_db) = analyse_fichier_connection(_FILE_CONNECT_TMP);
        $GLOBALS['connexions'][$server_db] = spip_connect_db($adresse_db, $sel_db, $login_db, $pass_db, $sel_db, $server_db);
    }
    if (!$res) {
        if (file_exists(_FILE_CONNECT_TMP)) {
            include _FILE_CONNECT_TMP;
        } else {
            redirige_url_ecrire('install');
        }
        if (file_exists(_FILE_CHMOD_TMP)) {
            include _FILE_CHMOD_TMP;
        } else {
            redirige_url_ecrire('install');
        }
        $hidden = predef_ou_cache($adresse_db, $login_db, $pass_db, $server_db) . (defined('_INSTALL_NAME_DB') ? '' : "\n<input type='hidden' name='sel_db' value='{$sel_db}' />");
        $auteur_obligatoire = $ldap_present ? 0 : !sql_countsel('spip_auteurs', '', '', '', $server_db);
        $res = "<div class='success'><b>" . _T('info_base_installee') . "</b></div>" . install_premier_auteur(_request('email'), _request('login'), _request('nom'), _request('pass'), $hidden, $auteur_obligatoire) . (($ldap_present or !function_exists('ldap_connect')) ? '' : install_propose_ldap());
    }
    echo install_debut_html();
    echo $res;
    echo install_fin_html();
}
Exemple #20
0
function spip_connect_main($connexion)
{
	if ($GLOBALS['spip_connect_version']< 0.1 AND _DIR_RESTREINT){
		include_spip('inc/headers');
		redirige_url_ecrire('upgrade', 'reinstall=oui');
	}

	if (!($f = $connexion['select'])) return false;
	if (!$r = $f('valeur','spip_meta', "nom='charset_sql_connexion'"))
		return false;
	if (!($f = $connexion['fetch'])) return false;
	$r = $f($r);
	return ($r['valeur'] ? $r['valeur'] : -1);
}
function formulaires_configurer_ckeditor_p3_charger_dist() {
	include_spip('inc/headers') ;
	if (_request('_cfg_reinit')) {
        	effacer_config('ckeditor') ;
		ckeditor_fix_default_values() ;
		redirige_url_ecrire('configurer_ckeditor','') ;
		return ;
	}
	ckeditor_ecrire_protectedtags() ;
	($cfg = lire_config("ckeditor")) || ($cfg = array()) ;
	$valeurs = array(
		'protectedtags' => $cfg['protectedtags'],
		'conversion' => array_key_exists('conversion', $cfg)?$cfg['conversion']:_CKE_CONVERSION_DEF,
		'html2spip_limite' => array_key_exists('html2spip_limite', $cfg)?$cfg['html2spip_limite']:_CKE_HTML2SPIP_LIMITE_DEF,
		'html2spip_identite' => array_key_exists('html2spip_identite', $cfg)?$cfg['html2spip_identite']:_CKE_HTML2SPIP_IDENTITE,
		'spiplinks' => array_key_exists('spiplinks', $cfg)?$cfg['spiplinks']:_CKE_SPIPLINKS_DEF,
		'insertall' => array_key_exists('insertall', $cfg)?$cfg['insertall']:_CKE_INSERTALL_DEF,
		'pastetext' => array_key_exists('pastetext', $cfg)?$cfg['pastetext']:_CKE_PASTETEXT_DEF,
		'selecteurs_public' => array_key_exists('selecteurs_public', $cfg)?$cfg['selecteurs_public']:_CKE_PUBLIC_DEF,
		'selecteurs_prive' => array_key_exists('selecteurs_prive', $cfg)?$cfg['selecteurs_prive']:_CKE_PRIVE_DEF,

		'cktoolslenlarge' => array_key_exists('cktoolslenlarge', $cfg)?$cfg['cktoolslenlarge']:_CKE_LARGE_DEF,
		'cktoolslenetroit' => array_key_exists('cktoolslenetroit', $cfg)?$cfg['cktoolslenetroit']:_CKE_ETROIT_DEF,
		'cklanguage' => array_key_exists('cklanguage', $cfg)?$cfg['cklanguage']:_CKE_LANGAGE_DEF,
		'entermode' => array_key_exists('entermode', $cfg)?$cfg['entermode']:_CKE_ENTERMODE_DEF,
		'shiftentermode' => array_key_exists('shiftentermode', $cfg)?$cfg['shiftentermode']:_CKE_SHIFTENTERMODE_DEF,
		'csssite' => array_key_exists('csssite', $cfg)?$cfg['csssite']:'',
		'contextes' => array_key_exists('contextes', $cfg)?$cfg['contextes']:'',
		'siteurl' => array_key_exists('siteurl', $cfg)?$cfg['siteurl']:''
	) ;

	$cvt_options = array(
		'aucune' => _T('ckeditor:aucune_conversion'),
		'partielle' => _T('ckeditor:conversion_partielle_vers_spip'),
	) ;
	
	if (find_in_path('lib/'._CKE_HTML2SPIP_VERSION)) {
		$cvt_options['complete'] = _T('ckeditor:utiliser_html2spip') ;
		$cvt_explication = array(
			'saisie' => 'explication_spip',
			'options' => array(
				'nom'=>'explication_conversion',
				'texte' => _T('ckeditor:html2spip_detecte'))
			) ;
	} else {
		$cvt_explication = array(
			'saisie' => 'explication_spip',
			'options' => array(
				'nom'=>'explication_conversion',
				'texte' => _T('ckeditor:aide_html2spip_non_trouvee'))
			) ;
	}

	$valeurs['saisies_cke_page3'] = array(
		array(
			'saisie' => 'fieldset',
			'options' => array(
				'nom' => 'options_conversion',
				'label' => _T('ckeditor:options_conversion'),
				'pliable' => 'oui',
				'plie' => 'oui'
			),
			'saisies' => array(
				array(
					'saisie' => 'input',
					'options' => array(
						'nom' => 'protectedtags',
						'label' => _T('ckeditor:balises_spip_autoriser')
					)
				),
				array(
					'saisie' => 'explication',
					'options' => array(
						'nom' => 'html2spip_explication',
						'texte' => _T('ckeditor:utiliser_html2spip_descriptif')
					)
				),
				$cvt_explication,
				array(
					'saisie' => 'selection',
					'options' => array(
						'nom' => 'conversion',
						'cacher_option_intro' => 'oui',
						'label' => _T('ckeditor:options_html2spip'),
						'datas' => $cvt_options
					)
				),
				array(
					'saisie' => 'input',
					'options' => array(
						'nom' => 'html2spip_identite',
						'label' => _T('ckeditor:html2spip_identite')
					)
				),
				array(
					'saisie' => 'case',
					'options' => array(
						'nom' => 'html2spip_limite',
						'label_case' => _T('ckeditor:html2spip_limite')
					)
				),
				array(
					'saisie' => 'case',
					'options' => array(
						'nom' => 'pastetext',
						'label_case' => _T('ckeditor:forcer_copie_comme_texte')
					)
				),
				array(
					'saisie' => 'selection',
					'options' => array(
						'nom' => 'entermode',
						'label' => _T('ckeditor:entermode'),
						'datas' => array(
							'ENTER_P' => _T('ckeditor:enter_p'),
							'ENTER_BR' => _T('ckeditor:enter_br'),
							'ENTER_DIV' => _T('ckeditor:enter_div')
						)
					)
				),
				array(
					'saisie' => 'selection',
					'options' => array(
						'nom' => 'shiftentermode',
						'label' => _T('ckeditor:shiftentermode'),
						'datas' => array(
							'ENTER_P' => _T('ckeditor:enter_p'),
							'ENTER_BR' => _T('ckeditor:enter_br'),
							'ENTER_DIV' => _T('ckeditor:enter_div')
						)
					)
				),
				array(
					'saisie' => 'explication',
					'options' => array(
						'nom' => 'explication_entermode',
						'texte' => "-* "._T('ckeditor:explique_p')."\n-* "._T('ckeditor:explique_div')
					)
				)
			)			
		),
		array(	'saisie' => 'fieldset',
			'options' => array(
				'nom' => 'options_activation',
				'label' => _T('ckeditor:utiliser_ckeditor_avec'),
				'pliable' => 'oui',
				'plie' => 'oui'
			),
			'saisies' => array(
				array(	'saisie' => 'explication_spip',
					'options' => array(
						'nom' => 'explication_selecteurs',
						'texte' => _T('ckeditor:aide_selecteurs')
					)),
				array(	'saisie' => 'textarea',
					'options' => array(
						'nom' => 'selecteurs_public',
						'label' => _T('ckeditor:selecteurs_espace_public'),
						'rows' => 6
					)),
				array(	'saisie' => 'textarea',
					'options' => array(
						'nom' => 'selecteurs_prive',
						'label' => _T('ckeditor:selecteurs_espace_prive'),
						'rows' => 6
					)),
			)
		),
		array(	'saisie' => 'fieldset',
			'options' => array(
				'nom' => 'options_spip',
				'label' => _T('ckeditor:options_spip'),
				'pliable' => 'oui',
				'plie' => 'oui'
			),
			'saisies' => array(
				array(	'saisie' => 'case',
					'options' => array(
						'nom' => 'spiplinks',
						'label_case' => _T('ckeditor:autoriser_liens_spip')
					)
				),
				array(
					'saisie' => 'case',
					'options' => array(
						'nom' => 'insertall',
						'label_case' => _T('ckeditor:autoriser_insertion_documents')
					)
				),
				array(
					'saisie' => 'input',
					'options' => array(
						'nom' => 'siteurl',
						'label' => _T('ckeditor:url_site'),
						'explication' => _T('ckeditor:normalement_detectee').lire_meta('adresse_site')
					)
				)
			)
		),
		array(
			'saisie' => 'fieldset',
			'options' => array(
				'nom' => 'options_gui',
				'label' => _T('ckeditor:options_gui'),
				'pliable' => 'oui',
				'plie' => 'oui'
			),
			'saisies' => array(
				array(
					'saisie' => 'input',
					'options' => array(
						'nom' => 'cktoolslenetroit',
						'label' => _T('ckeditor:etroit')
					)
				),
				array(
					'saisie' => 'input',
					'options' => array(
						'nom' => 'cktoolslenlarge',
						'label' => _T('ckeditor:large')
					)
				),
				array(
					'saisie' => 'selection',
					'options' => array(
						'nom' => 'cklanguage',
						'label' => _T('ckeditor:langue_ckeditor'),
						'cacher_option_intro' => 'oui',
						'datas' => array(
							'auto'=>'Auto détection',
							'af'=>'Afrikaans',
							'ar'=>'Arabic',
							'bg'=>'Bulgarian',
							'bn'=>'Bengali/Bangla',
							'bs'=>'Bosnian',
							'ca'=>'Catalan',
							'cs'=>'Czech',
							'da'=>'Danish',
							'de'=>'German',
							'el'=>'Greek',
							'en'=>'English',
							'en-au'=>'English (Australia)',
							'en-ca'=>'English (Canadian)',
							'en-uk'=>'English (United Kingdom)',
							'eo'=>'Esperanto',
							'es'=>'Spanish',
							'et'=>'Estonian',
							'eu'=>'Basque',
							'fa'=>'Persian',
							'fi'=>'Finnish',
							'fo'=>'Faroese',
							'fr'=>'French',
							'fr-ca'=>'French (Canada)',
							'gl'=>'Galician',
							'gu'=>'Gujarati',
							'he'=>'Hebrew',
							'hi'=>'Hindi',
							'hr'=>'Croatian',
							'hu'=>'Hungarian',
							'is'=>'Icelandic',
							'it'=>'Italian',
							'ja'=>'Japanese',
							'km'=>'Khmer',
							'ko'=>'Korean',
							'lt'=>'Lithuanian',
							'lv'=>'Latvian',
							'mn'=>'Mongolian',
							'ms'=>'Malay',
							'nb'=>'Norwegian Bokmal',
							'nl'=>'Dutch',
							'no'=>'Norwegian',
							'pl'=>'Polish',
							'pt'=>'Portuguese (Portugal)',
							'pt-br'=>'Portuguese (Brazil)',
							'ro'=>'Romanian',
							'ru'=>'Russian',
							'sk'=>'Slovak',
							'sl'=>'Slovenian',
							'sr'=>'Serbian (Cyrillic)',
							'sr-latn'=>'Serbian (Latin)',
							'sv'=>'Swedish',
							'th'=>'Thai',
							'tr'=>'Turkish',
							'uk'=>'Ukrainian',
							'vi'=>'Vietnamese',
							'zh'=>'Chinese Traditional',
							'zh-cn'=>'Chinese Simplified'
						)
					)
				)
			)
		),
		array(
			'saisie' => 'fieldset',
			'options' => array(
				'nom' => 'options_css',
				'label' => _T('ckeditor:options_css'),
				'pliable' => 'oui',
				'plie' => 'oui'
			),
			'saisies' => array(
				array(
					'saisie' => 'input',
					'options' => array(
						'nom' => 'csssite',
						'label' => _T('ckeditor:css_site')
					)
				),
				array(
					'saisie' => 'explication',
					'options' => array(
						'nom' => 'explication_csssite',
						'texte' => _T('ckeditor:aide_css_site')
					)
				),
				array(
					'saisie' => 'input',
					'options' => array(
						'nom' => 'contextes',
						'label' => _T('ckeditor:liste_de_contextes')
					)
				),
				array(
					'saisie' => 'explication',
					'options' => array(
						'nom' => 'explication_contextes',
						'texte' => _T('ckeditor:aide_contextes')
					)
				)
			)
		),
		array(
			'saisie' => 'fieldset',
			'options' => array(
				'nom' => 'nettoyage_ckeditor',
				'label' => _T('ckeditor:nettoyage_de_ckeditor'),
				'pliable' => 'oui',
				'plie' => 'oui'
			),
			'saisies' => array(
				array(
					'saisie' => 'radio',
					'options' => array(
						'nom' => 'nettoyage',
						'datas' => array(
							'sources'=>_T('ckeditor:les_sources'),
							'exemples'=>_T('ckeditor:les_exemples'),
							'tout'=>_T('ckeditor:les_sources_et_les_exemples')
						)
					)
				),
				array(
					'saisie' => 'bouton',
					'options' => array(
						'nom' => 'nettoyer',
						'type' => 'submit',
						'texte' => _T('ckeditor:nettoyer')
					)
				)
			)
		)

	) ;
	return $valeurs ;
}
Exemple #22
0
function spip_connect_main($connexion)
{
    if ($GLOBALS['spip_connect_version'] < 0.1 and _DIR_RESTREINT) {
        include_spip('inc/headers');
        redirige_url_ecrire('upgrade', 'reinstall=oui');
    }
    if (!($f = $connexion['select'])) {
        return false;
    }
    // en cas d'erreur select retourne la requette (is_string=true donc)
    if (!($r = $f('valeur', 'spip_meta', "nom='charset_sql_connexion'")) or is_string($r)) {
        return false;
    }
    if (!($f = $connexion['fetch'])) {
        return false;
    }
    $r = $f($r);
    return $r['valeur'] ? $r['valeur'] : -1;
}
Exemple #23
0
function action_editer_site_dist($arg=null) {

	if (is_null($arg)){
		$securiser_action = charger_fonction('securiser_action', 'inc');
		$arg = $securiser_action();
	}
	$resyndiquer = false;

	include_spip('inc/filtres'); // pour vider_url()

	if (preg_match(',options/(\d+),',$arg, $r)) {
		$id_syndic = $r[1];
		$resyndiquer = editer_site_options($id_syndic);
	// Envoi depuis le formulaire d'edition d'un site existant
	} else if ($id_syndic = intval($arg)) {
		// reload si on change une des valeurs de syndication
		if (
		(_request('url_syndic') OR _request('resume') OR _request('syndication'))
		AND $t = sql_fetsel('url_syndic,syndication,resume', 'spip_syndic', "id_syndic=".sql_quote($id_syndic))
		AND (
			(_request('url_syndic') AND _request('url_syndic') != $t['url_syndic'])
			OR
			(_request('syndication') AND _request('syndication') != $t['syndication'])
			OR
			(_request('resume') AND _request('resume') != $t['resume'])
			)
		)
			set_request('reload', 'oui');
		revisions_sites($id_syndic);

	// Envoi normal depuis le formulaire de creation d'un site
	}
	elseif (strlen(vider_url(_request('url_site')))
		AND strlen(_request('nom_site'))) {
			set_request('reload', 'oui');
			$id_syndic = insert_syndic(_request('id_parent'));
			revisions_sites($id_syndic);
			if ($logo = _request('logo')
			 AND $format_logo = _request('format_logo')){
			 	include_spip('inc/distant');
				@rename(copie_locale($logo),
				_DIR_IMG . 'siteon'.$id_syndic.'.'.$format_logo);
			 }
	}
	// Erreur
	else {
		include_spip('inc/headers');
		redirige_url_ecrire();
	}

	// Re-syndiquer le site
	if (_request('reload') == 'oui') {
		// Effacer les messages si on supprime la syndication
		if (_request('syndication') == 'non')
			sql_delete("spip_syndic_articles", "id_syndic=".sql_quote($id_syndic));

		$t = sql_getfetsel('descriptif', 'spip_syndic', "id_syndic=$id_syndic AND syndication IN ('oui', 'sus', 'off')", '','', 1);
		if ($t !== NULL) {

			// Si descriptif vide, chercher le logo si pas deja la
			$chercher_logo = charger_fonction('chercher_logo', 'inc');
			if (!$logo = $chercher_logo($id_syndic, 'id_syndic', 'on')
			OR !$t) {
				if ($auto = vider_url(_request('url_auto'))) {
					$auto = analyser_site($auto);
					if (!strlen($t) AND strlen($auto['descriptif']))
						revisions_sites($id_syndic, array('descriptif' => $auto['descriptif']));
				}
				if (!$logo
				AND $auto['logo'] AND $auto['format_logo'])
					@rename($auto['logo'],
					_DIR_IMG . 'siteon'.$id_syndic.'.'.$auto['format_logo']);
			}
			$resyndiquer = true;
		}
	}

	if ($resyndiquer) {
	  // ah si PHP connaisait les fermetures...
	  // A la place, une constante utilisee exclusivement
	  // dans la fct suivante.
		define('_GENIE_SYNDIC_NOW', $id_syndic);
		// forcer l'execution immediate de cette tache
		// (i.e. appeler la fct suivante avec gestion du verrou)
		cron(0, array('syndic' => -91));
	}
	if (_request('redirect')) {
	$redirect = parametre_url(urldecode(_request('redirect')),
		'id_syndic', $id_syndic, '&');
		include_spip('inc/headers');
		redirige_par_entete($redirect);
	}
	else
		return array($id_syndic,'');
}
Exemple #24
0
function maj_while($installee, $cible, $maj, $meta='', $table='meta')
{
	$n = 0;
	$time = time();

	while ($installee < $cible) {
		$installee++;
		if (isset($maj[$installee])) {
			$etape = serie_alter($installee, $maj[$installee], $meta, $table);
			
			if ($etape) return array($installee, $etape);
			$n = time() - $time;
			spip_log("$table $meta: $installee en $n secondes",'maj');
			if ($meta) ecrire_meta($meta, $installee,'non', $table);
		} // rien pour SQL
		if ($n >= _UPGRADE_TIME_OUT) {
			redirige_url_ecrire('upgrade', "reinstall=$installee&meta=$meta&table=$table");
		}
	}
	// indispensable pour les chgt de versions qui n'ecrivent pas en base
	// tant pis pour la redondance eventuelle avec ci-dessus
	if ($meta) ecrire_meta($meta, $installee,'non');
	spip_log("MAJ terminee. $meta: $installee",'maj');
	return array();
}
function install_etape_3b_dist()
{
    $login = _request('login');
    $email = _request('email');
    $nom = _request('nom');
    $pass = _request('pass');
    $pass_verif = _request('pass_verif');
    $server_db = defined('_INSTALL_SERVER_DB') ? _INSTALL_SERVER_DB : _request('server_db');
    if (!defined('_PASS_LONGUEUR_MINI')) {
        define('_PASS_LONGUEUR_MINI', 6);
    }
    if (!defined('_LOGIN_TROP_COURT')) {
        define('_LOGIN_TROP_COURT', 4);
    }
    if ($login) {
        $echec = $pass != $pass_verif ? _T('info_passes_identiques') : (strlen($pass) < _PASS_LONGUEUR_MINI ? _T('info_passe_trop_court_car_pluriel', array('nb' => _PASS_LONGUEUR_MINI)) : (strlen($login) < _LOGIN_TROP_COURT ? _T('info_login_trop_court') : ''));
        include_spip('inc/filtres');
        if (!$echec and $email and !email_valide($email)) {
            $echec = _T('form_email_non_valide');
        }
        if ($echec) {
            echo minipres('AUTO', info_progression_etape(3, 'etape_', 'install/', true) . "<div class='error'><h3>{$echec}</h3>\n" . "<p>" . _T('avis_connexion_echec_2') . "</p>" . "</div>");
            exit;
        }
    }
    if (@file_exists(_FILE_CHMOD_TMP)) {
        include _FILE_CHMOD_TMP;
    } else {
        redirige_url_ecrire('install');
    }
    if (!@file_exists(_FILE_CONNECT_TMP)) {
        redirige_url_ecrire('install');
    }
    # maintenant on connait le vrai charset du site s'il est deja configure
    # sinon par defaut lire_meta reglera _DEFAULT_CHARSET
    # (les donnees arrivent de toute facon postees en _DEFAULT_CHARSET)
    lire_metas();
    if ($login) {
        include_spip('inc/charsets');
        $nom = importer_charset($nom, _DEFAULT_CHARSET);
        $login = importer_charset($login, _DEFAULT_CHARSET);
        $email = importer_charset($email, _DEFAULT_CHARSET);
        # pour le passwd, bizarrement il faut le convertir comme s'il avait
        # ete tape en iso-8859-1 ; car c'est en fait ce que voit md5.js
        $pass = unicode2charset(utf_8_to_unicode($pass), 'iso-8859-1');
        include_spip('auth/sha256.inc');
        include_spip('inc/acces');
        $htpass = generer_htpass($pass);
        $alea_actuel = creer_uniqid();
        $alea_futur = creer_uniqid();
        $shapass = _nano_sha256($alea_actuel . $pass);
        // prelablement, creer le champ webmestre si il n'existe pas (install neuve
        // sur une vieille base
        $t = sql_showtable("spip_auteurs", true);
        if (!isset($t['field']['webmestre'])) {
            @sql_alter("TABLE spip_auteurs ADD webmestre varchar(3)  DEFAULT 'non' NOT NULL");
        }
        $id_auteur = sql_getfetsel("id_auteur", "spip_auteurs", "login="******"nom" => $nom, 'email' => $email, 'login' => $login, 'pass' => $shapass, 'alea_actuel' => $alea_actuel, 'alea_futur' => $alea_futur, 'htpass' => $htpass, 'statut' => '0minirezo'), "id_auteur={$id_auteur}");
        } else {
            $id_auteur = sql_insertq('spip_auteurs', array('nom' => $nom, 'email' => $email, 'login' => $login, 'pass' => $shapass, 'htpass' => $htpass, 'alea_actuel' => $alea_actuel, 'alea_futur' => $alea_futur, 'statut' => '0minirezo'));
        }
        // le passer webmestre separrement du reste, au cas ou l'alter n'aurait pas fonctionne
        @sql_updateq('spip_auteurs', array('webmestre' => 'oui'), "id_auteur={$id_auteur}");
        // inserer email comme email webmaster principal
        // (sauf s'il est vide: cas de la re-installation)
        if ($email) {
            ecrire_meta('email_webmaster', $email);
        }
        // Connecter directement celui qui vient de (re)donner son login
        // mais sans cookie d'admin ni connexion longue
        include_spip('inc/auth');
        if (!($auteur = auth_identifier_login($login, $pass)) or !auth_loger($auteur, true)) {
            spip_log("login automatique impossible {$auth_spip} {$session}" . count($row));
        }
    }
    // installer les metas
    $config = charger_fonction('config', 'inc');
    $config();
    // activer les plugins
    // leur installation ne peut pas se faire sur le meme hit, il faudra donc
    // poursuivre au hit suivant
    include_spip('inc/plugin');
    actualise_plugins_actifs();
    include_spip('inc/distant');
    redirige_par_entete(parametre_url(self(), 'etape', '4', '&'));
}
Exemple #26
0
function install_etape_3_dist()
{
	$ldap_present = _request('ldap_present');

	if (!$ldap_present) {
		$adresse_db = defined('_INSTALL_HOST_DB')
		? _INSTALL_HOST_DB
		: _request('adresse_db');

		$login_db = defined('_INSTALL_USER_DB')
		? _INSTALL_USER_DB
		: _request('login_db');

		$pass_db = defined('_INSTALL_PASS_DB')
		? _INSTALL_PASS_DB
		: _request('pass_db');

		$server_db = defined('_INSTALL_SERVER_DB')
		? _INSTALL_SERVER_DB
		: _request('server_db');

		$chmod_db = defined('_SPIP_CHMOD')
		? _SPIP_CHMOD
		: _request('chmod');

		$choix_db = defined('_INSTALL_NAME_DB')
		? _INSTALL_NAME_DB
		: _request('choix_db');

		$sel_db = ($choix_db == "new_spip")
		? _request('table_new') : $choix_db;

		$res = install_bases($adresse_db, $login_db, $pass_db,  $server_db, $choix_db, $sel_db, $chmod_db);

		if ($res) {
			$res .= info_progression_etape(2,'etape_','install/', true);

			$res .= "<p class='resultat echec'><b>"._T('avis_operation_echec')."</b></p>"._T('texte_operation_echec');
		}
	
	} else { 
		$res = '';
		list($adresse_db, $login_db, $pass_db, $sel_db, $server_db)
		= analyse_fichier_connection(_FILE_CONNECT_TMP);
	}

	if (!$res) {
		if (file_exists(_FILE_CONNECT_TMP))
			include(_FILE_CONNECT_TMP);
		else
			redirige_url_ecrire('install');
	
		if (file_exists(_FILE_CHMOD_TMP))
			include(_FILE_CHMOD_TMP);
		else
			redirige_url_ecrire('install');

		$hidden = predef_ou_cache($adresse_db, $login_db, $pass_db, $server_db)
		  . (defined('_INSTALL_NAME_DB') ? ''
		     : "\n<input type='hidden' name='sel_db' value='$sel_db' />");
		$res =  "<p class='resultat ok'><b>"
		. _T('info_base_installee')
		. "</b></p>"
		. install_premier_auteur(_request('email'),
					_request('login'),
					_request('nom'),
					_request('pass'),
					 $hidden)
		  . (($ldap_present  OR !function_exists('ldap_connect'))
		     ?  '' : install_propose_ldap());
	}

	echo install_debut_html();
	echo $res;
	echo install_fin_html();
}
Exemple #27
0
function install_etape_chmod_dist()
{
	global $test_dirs;
	$test_dir =  _request('test_dir');
	$chmod = 0;

	if ($test_dir) {
		if (substr($test_dir,-1)!=='/') $test_dir .= '/';
		if (!in_array($test_dir, $test_dirs)) $test_dirs[] = _DIR_RACINE  . $test_dir;
	} else {
		if (!_FILE_CONNECT) {
			$test_dirs[] = _DIR_CONNECT;
			$test_dirs[] = _DIR_CHMOD;
		}
	}

	$bad_dirs = array();
	$absent_dirs  = array();;

	while (list(, $my_dir) = each($test_dirs)) {
		$test = test_ecrire($my_dir);
		if (!$test) {
			$m = preg_replace(',^' . _DIR_RACINE . ',', '',$my_dir);
			if (@file_exists($my_dir)) {
				$bad_dirs["<li>".$m."</li>"] = 1;
			} else
				$absent_dirs["<li>".$m."</li>"] = 1;
		} else $chmod = max($chmod, $test);
	}

	if ($bad_dirs OR $absent_dirs) {

	if (!_FILE_CONNECT) {
		$titre = _T('dirs_preliminaire');
		$continuer = ' '._T('dirs_commencer') . '.';
	} else
		$titre = _T('dirs_probleme_droits');


	$res = "<div align='right'>". menu_langues('var_lang_ecrire')."</div>\n";

	if ($bad_dirs) {
		$res .=
		  _T('dirs_repertoires_suivants',
		     array('bad_dirs' => join("\n", array_keys($bad_dirs)))) .
		  	"<b>". _T('login_recharger')."</b>.";
	}

	if ($absent_dirs) {
	  	$res .=
			_T('dirs_repertoires_absents',
			   array('bad_dirs' => join("\n", array_keys($absent_dirs)))) .
			"<b>". _T('login_recharger')."</b>.";
	}
	$res = "<p>" . $continuer  . $res . aide ("install0") . "</p>";

	$t = _T('login_recharger');
	$t = (!$test_dir ? "" : 
		 "<input type='hidden' name='test_dir' value='$test_dir' />")
	. "<input type='hidden' name='etape' value='chmod' />"
	. "<div style='text-align: right'><input type='submit' value='$t' /></div>"; 

	echo minipres($titre, $res . generer_form_ecrire('install',  $t));

	} else {
		$deja = (_FILE_CONNECT AND analyse_fichier_connection(_FILE_CONNECT));
		if (!$deja)
			redirige_url_ecrire("install", "etape=1&chmod=".$chmod);
		else	redirige_url_ecrire();
	}
}
Exemple #28
0
function export_all_abort()
{
	// evacuer la fausse erreur du cas du validateur en boucle.
	if (_request('exec') == 'valider_xml')  return;
	include_spip('base/import_all');
	import_all_fin(array());
	include_spip('inc/import');
	detruit_restaurateur();
	effacer_meta('admin');
	// et verifier la session
	include_spip('inc/auth');
	$login = auth_retrouver_login($GLOBALS['visiteur_session']['login']);
	$id_auteur = sql_getfetsel('id_auteur', 'spip_auteurs', 'login='******'visiteur_session']['id_auteur'] != $id_auteur)
			auth_deloger();
	else
			redirige_url_ecrire();
}