예제 #1
0
/**
 * Effacer une rubrique
 *
 * http://doc.spip.org/@action_supprimer_dist
 *
 * @param null $id_rubrique
 * @return void
 */
function action_supprimer_rubrique_dist($id_rubrique = null)
{
    if (is_null($id_rubrique)) {
        $securiser_action = charger_fonction('securiser_action', 'inc');
        $id_rubrique = $securiser_action();
    }
    if (intval($id_rubrique)) {
        sql_delete("spip_rubriques", "id_rubrique=" . intval($id_rubrique));
        // Les admin restreints qui n'administraient que cette rubrique
        // deviennent redacteurs
        // (il y a sans doute moyen de faire ca avec un having)
        $q = sql_select("id_auteur", "spip_auteurs_liens", "objet='rubrique' AND id_objet=" . intval($id_rubrique));
        while ($r = sql_fetch($q)) {
            $id_auteur = $r['id_auteur'];
            // degrader avant de supprimer la restriction d'admin
            // section critique sur les droits
            $n = sql_countsel("spip_auteurs_liens", "objet='rubrique' AND id_objet!=" . intval($id_rubrique) . " AND id_auteur=" . intval($id_auteur));
            if (!$n) {
                include_spip('action/editer_auteur');
                auteurs_set($id_auteur, array("statut" => '1comite'));
            }
            sql_delete("spip_auteurs_liens", "objet='rubrique' AND id_objet=" . intval($id_rubrique) . " AND id_auteur=" . intval($id_auteur));
        }
        // menu_rubriques devra recalculer
        effacer_meta("date_calcul_rubriques");
        // Une rubrique supprimable n'avait pas le statut "publie"
        // donc rien de neuf pour la rubrique parente
        include_spip('inc/rubriques');
        calculer_langues_rubriques();
        // invalider les caches marques de cette rubrique
        include_spip('inc/invalideur');
        suivre_invalideur("id='rubrique/{$id_rubrique}'");
    }
}
예제 #2
0
function action_editer_auteur_dist($arg=null) {

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


	// si id_auteur n'est pas un nombre, c'est une creation
	if (!$id_auteur = intval($arg)) {

		if (($id_auteur = insert_auteur()) > 0){

			# cf. GROS HACK
			# recuperer l'eventuel logo charge avant la creation
			# ils ont un id = 0-id_auteur de la session
			$id_hack = 0 - $GLOBALS['visiteur_session']['id_auteur'];
			$chercher_logo = charger_fonction('chercher_logo', 'inc');
			if (list($logo) = $chercher_logo($id_hack, 'id_auteur', 'on'))
				rename($logo, str_replace($id_hack, $id_auteur, $logo));
			if (list($logo) = $chercher_logo($id_hack, 'id_auteur', 'off'))
				rename($logo, str_replace($id_hack, $id_auteur, $logo));
		}
	}

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

	if ($redirect = _request('redirect')) {
		if ($err){
			$ret = ('&redirect=' . $redirect);
			spip_log("echec editeur auteur: " . join(' ',$echec));
			$echec = '&echec=' . join('@@@', $echec);
			$redirect = generer_url_ecrire('auteur_infos',"id_auteur=$id_auteur$echec$ret",'&');
		}
		else
			$redirect = urldecode($redirect);

		$redirect = parametre_url($redirect,'id_auteur', $id_auteur, '&');

		include_spip('inc/headers');
		redirige_par_entete($redirect);
	}
	else
		return array($id_auteur,$err);

	$redirect = _request('redirect');

}
예제 #3
0
function action_confirmer_email_dist()
{
	$securiser_action = charger_fonction('securiser_action', 'inc');
	$arg = $securiser_action();

	include_spip('inc/filtres');
	if ($GLOBALS['visiteur_session']['id_auteur'] AND email_valide($arg)){
		$editer_auteur = charger_fonction('editer_auteur','action');
		auteurs_set($GLOBALS['visiteur_session']['id_auteur'],array('email'=>$arg));
	}
	// verifier avant de rediriger pour invalider le message de confirmation
	// si ca n'a pas marche
	if ($redirect = _request('redirect') AND !$arg == sql_getfetsel('email', 'spip_auteurs', 'id_auteur='.intval($GLOBALS['visiteur_session'])))
		$GLOBALS['redirect'] = parametre_url($redirect, 'email_modif','');

}
예제 #4
0
/**
 * Modification du mot de passe d'un auteur.
 * Utilise le cookie d'oubli fourni en url ou l'argument du formulaire pour identifier l'auteur
 *
 * @param int $id_auteur
 */
function formulaires_mot_de_passe_traiter_dist($id_auteur = null, $jeton = null)
{
    $message = '';
    // compatibilite anciens appels du formulaire
    if (is_null($jeton)) {
        $jeton = _request('p');
    }
    $row = retrouve_auteur($id_auteur, $jeton);
    if ($row && ($id_auteur = $row['id_auteur']) && ($oubli = _request('oubli'))) {
        include_spip('action/editer_auteur');
        include_spip('action/inscrire_auteur');
        auteurs_set($id_auteur, array('pass' => $oubli));
        auteur_effacer_jeton($id_auteur);
        $login = $row['login'];
        $message = "<b>" . _T('pass_nouveau_enregistre') . "</b>" . "<br />" . _T('pass_rappel_login', array('login' => $login));
    }
    return array('message_ok' => $message);
}