예제 #1
0
function action_instituer_langue_rubrique_dist() {

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

	list($id_rubrique, $id_parent) = preg_split('/\W/', $arg);

	if ($changer_lang
	AND $id_rubrique>0
	AND $GLOBALS['meta']['multi_rubriques'] == 'oui'
	AND ($GLOBALS['meta']['multi_secteurs'] == 'non' OR $id_parent == 0)) {
		if ($changer_lang != "herit")
			sql_updateq('spip_rubriques', array('lang'=>$changer_lang, 'langue_choisie'=>'oui'), "id_rubrique=$id_rubrique");
		else {
			if ($id_parent == 0)
				$langue_parent = $GLOBALS['meta']['langue_site'];
			else {
				$langue_parent = sql_getfetsel("lang", "spip_rubriques", "id_rubrique=$id_parent");
			}
			sql_updateq('spip_rubriques', array('lang'=>$langue_parent, 'langue_choisie'=>'non'), "id_rubrique=$id_rubrique");
		}
		include_spip('inc/rubriques');
		calculer_langues_rubriques();

		// invalider les caches marques de cette rubrique
		include_spip('inc/invalideur');
		suivre_invalideur("id='id_rubrique/$id_rubrique'");
	}
}
/**
 * Modifier la langue d'un objet
 *
 * @param string $objet
 * @param int $id
 * @param int $id_rubrique
 * @param string $changer_lang
 * @return string
 */
function action_instituer_langue_objet_dist($objet, $id, $id_rubrique, $changer_lang)
{
    if ($changer_lang) {
        $table_objet_sql = table_objet_sql($objet);
        $id_table_objet = id_table_objet($objet);
        if ($changer_lang != "herit") {
            sql_updateq($table_objet_sql, array('lang' => $changer_lang, 'langue_choisie' => 'oui'), "{$id_table_objet}=" . intval($id));
            include_spip('inc/rubriques');
            if ($table_objet_sql == 'spip_rubriques') {
                calculer_langues_rubriques();
            }
            $langues = calculer_langues_utilisees();
            ecrire_meta('langues_utilisees', $langues);
        } else {
            $langue_parent = sql_getfetsel("lang", "spip_rubriques", "id_rubrique=" . intval($id_rubrique));
            if (!$langue_parent) {
                $langue_parent = $GLOBALS['meta']['langue_site'];
            }
            sql_updateq($table_objet_sql, array('lang' => $langue_parent, 'langue_choisie' => 'non'), "{$id_table_objet}=" . intval($id));
            $changer_lang = $langue_parent;
            if ($table_objet_sql == 'spip_rubriques') {
                include_spip('inc/rubriques');
                calculer_langues_rubriques();
            }
        }
    }
    return $changer_lang;
}
예제 #3
0
파일: configurer.php 프로젝트: rhertzog/lcs
function action_configurer_dist() {
	
	$securiser_action = charger_fonction('securiser_action', 'inc');
	$arg = $securiser_action();

	# ceinture & bretelles, a priori le test dans exec_configurer
	# suffit a empecher d'obtenir un hash qui passe le test ci-dessus
	if(!autoriser('configurer', _request('configuration'))) {
		include_spip('inc/minipres');
		echo minipres(_T('info_acces_interdit'));
		exit;
	}


	$r = rawurldecode(_request('redirect'));
	$r = parametre_url($r, 'configuration', $arg,"&");
	appliquer_modifs_config();

	// Cette globale est fixee par appliquer_modifs_config();
	// c'est un message a afficher dans l'exec de retour (relayeur si comme ici on est en ajax)
	if ($arg == 'relayeur')
		$r = parametre_url($r, 'retour_proxy', $GLOBALS['retour_proxy'],"&");
	else if ($arg == 'langue') {
	  	include_spip('inc/rubriques');
		calculer_langues_rubriques();
	}
	if (_request('envoi_now')) cron(0, array('mail' => -1));
	redirige_par_entete($r);
}
예제 #4
0
파일: supprimer.php 프로젝트: rhertzog/lcs
function action_supprimer_rubrique($r)
{
	list(,,$id_rubrique) = $r;
	sql_delete("spip_rubriques", "id_rubrique=$id_rubrique");
	sql_delete("spip_mots_rubriques", "id_rubrique=$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_rubriques", "id_rubrique=$id_rubrique");

	while ($r = sql_fetch($q)) {
		$id_auteur = $r['id_auteur'];
		sql_delete("spip_auteurs_rubriques", "id_rubrique=$id_rubrique AND id_auteur=$id_auteur");
		$n = sql_countsel("spip_auteurs_rubriques", "id_auteur=$id_auteur");
		if (!$n)
			sql_updateq("spip_auteurs", array("statut" => '1comite'), "id_auteur=$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='id_rubrique/$id_rubrique'");
}
예제 #5
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}'");
    }
}
예제 #6
0
function exec_configurer_iecompat() {
	
	$securiser_action = charger_fonction('securiser_action', 'inc');
	$arg = $securiser_action();
	$r = rawurldecode(_request('redirect'));
	$r = parametre_url($r, 'configuration', $arg,"&");
	appliquer_modifs_config();

	// Cette globale est fixee par appliquer_modifs_config();
	// c'est un message a afficher dans l'exec de retour (relayeur si comme ici on est en ajax)
	if ($arg == 'relayeur')
		$r = parametre_url($r, 'retour_proxy', $GLOBALS['retour_proxy'],"&");
	else if ($arg == 'langue') {
	  	include_spip('inc/rubriques');
		calculer_langues_rubriques();
	}
	if (_request('envoi_now')) cron(0, array('mail' => -1));
	redirige_par_entete($r);
}
/**
 * Modifier la langue d'un objet
 *
 * @param string $objet
 * @param int $id
 * @param int $id_rubrique
 * @param string $changer_lang
 * @param string $serveur
 * @return string
 */
function action_instituer_langue_objet_dist($objet, $id, $id_rubrique, $changer_lang, $serveur = '')
{
    if ($changer_lang) {
        $table_objet_sql = table_objet_sql($objet);
        $id_table_objet = id_table_objet($objet);
        $trouver_table = charger_fonction('trouver_table', 'base');
        $desc = $trouver_table($table_objet_sql, $serveur);
        $set = array();
        if (isset($desc['field']['langue_choisie'])) {
            $set['langue_choisie'] = 'oui';
        }
        if ($changer_lang != "herit") {
            $set['lang'] = $changer_lang;
            sql_updateq($table_objet_sql, $set, "{$id_table_objet}=" . intval($id), '', $serveur);
            include_spip('inc/rubriques');
            // pour calculer_langues_rubriques et calculer_langues_utilisees
            if ($table_objet_sql == 'spip_rubriques') {
                calculer_langues_rubriques();
            }
            $langues = calculer_langues_utilisees($serveur);
            ecrire_meta('langues_utilisees', $langues);
        } else {
            $langue_parent = sql_getfetsel("lang", "spip_rubriques", "id_rubrique=" . intval($id_rubrique));
            if (!$langue_parent) {
                $langue_parent = $GLOBALS['meta']['langue_site'];
            }
            $changer_lang = $langue_parent;
            $set['lang'] = $changer_lang;
            if (isset($set['langue_choisie'])) {
                $set['langue_choisie'] = 'non';
            }
            sql_updateq($table_objet_sql, $set, "{$id_table_objet}=" . intval($id), '', $serveur);
            if ($table_objet_sql == 'spip_rubriques') {
                include_spip('inc/rubriques');
                calculer_langues_rubriques();
            }
        }
    }
    return $changer_lang;
}
예제 #8
0
function formulaires_configurer_langue_traiter_dist()
{
    $res = array('editable' => true);
    if ($lang = _request('changer_langue_site')) {
        include_spip('inc/lang');
        // verif que la langue demandee est licite
        if (changer_langue($lang)) {
            ecrire_meta('langue_site', $lang);
            // le test a defait ca:
            utiliser_langue_visiteur();
            $res['message_ok'] = _T('config_info_enregistree');
            include_spip('inc/rubriques');
            calculer_langues_rubriques();
        }
        // le test a defait ca:
        utiliser_langue_visiteur();
    }
    if (!$res['message_ok']) {
        $res['message_erreur'] = _L('erreur');
    }
    return $res;
}
/**
 * Instituer une rubrique (changer son parent)
 *
 * Change le parent d'une rubrique, si les autorisations sont correctes,
 * mais n'accèpte pas de déplacer une rubrique dans une de ses filles, tout de même !
 *
 * Recalcule les secteurs, les langues et déplace les brèves au passage.
 *
 * @param int $id_rubrique
 *     Identifiant de la rubrique à instituer
 * @param array $c
 *     Informations pour l'institution (id_rubrique, confirme_deplace)
 * @global array $GLOBALS ['visiteur_session']
 * @return string
 *     Chaîne vide : aucune erreur
 *     Chaîne : Texte du message d'erreur
 */
function rubrique_instituer($id_rubrique, $c)
{
    // traitement de la rubrique parente
    // interdiction de deplacer vers ou a partir d'une rubrique
    // qu'on n'administre pas.
    if (null !== ($id_parent = $c['id_parent'])) {
        $id_parent = intval($id_parent);
        $filles = calcul_branche_in($id_rubrique);
        if (strpos(",{$id_parent},", ",{$filles},") !== false) {
            spip_log("La rubrique {$id_rubrique} ne peut etre fille de sa descendante {$id_parent}");
        } else {
            $s = sql_fetsel("id_parent, statut", "spip_rubriques", "id_rubrique={$id_rubrique}");
            $old_parent = $s['id_parent'];
            if (!($id_parent != $old_parent and autoriser('publierdans', 'rubrique', $id_parent) and autoriser('creerrubriquedans', 'rubrique', $id_parent) and autoriser('publierdans', 'rubrique', $old_parent))) {
                if ($s['statut'] != 'new') {
                    spip_log("deplacement de {$id_rubrique} vers {$id_parent} refuse a " . $GLOBALS['visiteur_session']['id_auteur'] . ' ' . $GLOBALS['visiteur_session']['statut']);
                }
            } elseif (editer_rubrique_breves($id_rubrique, $id_parent, $c)) {
                $statut_ancien = $s['statut'];
                sql_updateq('spip_rubriques', array('id_parent' => $id_parent), "id_rubrique={$id_rubrique}");
                propager_les_secteurs();
                // Deplacement d'une rubrique publiee ==> chgt general de leur statut
                if ($statut_ancien == 'publie') {
                    calculer_rubriques_if($old_parent, array('id_rubrique' => $id_parent), $statut_ancien);
                } elseif (!$statut_ancien || $old_parent != $id_parent) {
                    effacer_meta("date_calcul_rubriques");
                }
                calculer_langues_rubriques();
            }
        }
    }
    return '';
    // pas d'erreur
}
예제 #10
0
/**
 * Plugin pour Spip 2.0
 * Licence GPL (c) 2006-2008 (d0M0.b) 
 *
 */
function action_ajouter_zone_groupe_dist(){
#	$securiser_action = charger_fonction('securiser_action','inc');
#	$arg = $securiser_action();
	$mess_ok='';
	$err='';
    $redirect = _request('redirect');
	  if ($redirect==NULL) $redirect="peupler_zone_lcs";

	if (_request('arg')) {
		$v_zones = sql_fetsel('*','spip_zones', 'titre='.sql_quote(_request('arg')));
		if($v_zones['titre']) {
			$err="La zone" ._request('group')." existe deja";	
			   redirige_par_entete(parametre_url(str_replace("&","&",urldecode($redirect)),'message',$err,'&'));
		}
		
		// nouvel zone
		$id_zone = sql_insertq("spip_zones", array("maj"=>"NOW()", "titre"=>_request('arg'), "descriptif"=>'', 'publique'=>'oui','privee'=>'oui'));

		//on cree une rubrique du meme non que le groupe et on la place dans la zone creee
		$prefixes=array('Equipe'=>'Equipes','Classe'=>'Classes','Cours'=>'Cours','Matiere'=>'Matières');
		// On regarde s'il esiste une rubrique de meme nom que la zone creee
		if(!$rub_exist= sql_fetsel("*","spip_rubriques", "titre=".sql_quote(_request('arg')))){
#		if(!$rub_exist= sql_getfetsel("id_rubrique","spip_rubriques", "titre=".sql_quote(_request('arg')))){
			include_spip('inc/rubriques');
			$id_parent=0;
			//pour les groupes secondaires Equipe, Classe, Matiere et Cours
			// on cree une rubrique (Equipes, Classes, Matieres et Cours) a la racine
			// et on place les rubriques crees dedans
#			$prefixes=array('Equipe'=>'Equipes','Classe'=>'Classes','Cours'=>'Cours','Matiere'=>'Matières');
			foreach($prefixes as $prefix=>$nom_rub) {
				if(preg_match("/".$prefix."/",_request('arg'))) {
					$rub_parent=$nom_rub;
		 			if ($id_rubrique= sql_getfetsel("id_rubrique","spip_rubriques", "titre=".sql_quote($rub_parent))) {
		 				 $id_parent=$id_rubrique;
		 			}
		 			else{
		 				$id_rubrique = sql_insertq("spip_rubriques", array(
							'titre' => $rub_parent,
							id_parent => 0,
							'statut' => 'new'));
							$id_parent=$id_rubrique;
						propager_les_secteurs();
						calculer_langues_rubriques();
		 			}
				}
			}
	
			// pour le groupe principal, on crée a la racine
			//	Pour les groupes secondaires, on regarde si la rubrique parent existe
			// sinon on la cree
		 	if ($id_rubrique= sql_getfetsel("id_rubrique","spip_rubriques", "titre=".sql_quote($rub_parent))) $id_parent=$id_rubrique;
#			$row_rub_parent['id_rubrique'] ? $id_parent=$row_rub_parent['id_rubrique'] : $id_parent=0;
			$id_rubrique = sql_insertq("spip_rubriques", array(
				'titre' => _request('arg'),
				id_parent => intval($id_parent),
				'statut' => 'new'));
			propager_les_secteurs();
			calculer_langues_rubriques();
			
			// on place la rubrique creee	et la rubrique p	arent ds la zone de meme nom
			$ids['id_zone']=$id_zone;
			$ids['id_rubrique']=$id_rubrique;
			$zone_rubrique = sql_insertq("spip_zones_rubriques", $ids,'',$serveur='connect',$option=true);
			$zone_parent = sql_insertq("spip_zones_rubriques", array("id_zone"=>$id_zone,"id_rubrique"=>$id_parent),'',$serveur='connect',$option=true);
		 			
		 	// pour le groupe Equipe on donne le droit a la zone sur la rubrique classe (si elle existe)
			$classe = preg_replace('/Equipe/', 'Classe', _request('arg'));
			if($id_rub_classe=sql_getfetsel("id_rubrique","spip_rubriques", "titre=".sql_quote($classe))) {
				$zone_rub_classe = sql_insertq("spip_zones_rubriques", array('id_zone'=>$id_zone, 'id_rubrique'=>$id_rub_classe),'',$serveur='connect',$option=true);
			}
		}else{
			$zone_rubrique = sql_insertq("spip_zones_rubriques", array('id_zone'=>$id_zone, 'id_rubrique'=>$rub_exist['id_rubrique']),'',$serveur='connect',$option=true);
			/*
			foreach($prefixes as $prefix=>$nom_rub) {
				if(preg_match("/".$prefix."/",_request('arg')))	$zone_parent = sql_insertq("spip_zones_rubriques", array('id_zone'=>$id_zone, 'id_rubrique'=>$rub_exist['id_parent']),'',$serveur='connect',$option=true);
			}
			$classe = preg_replace('/Equipe/', 'Classe', _request('arg'));
			if($id_rub_classe=sql_getfetsel("id_rubrique","spip_rubriques", "titre=".sql_quote($classe))) {
				$zone_rub_classe = sql_insertq("spip_zones_rubriques", array('id_zone'=>$id_zone, 'id_rubrique'=>$id_rub_classe),'',$serveur='connect',$option=true);
			}
			*/
		}
		
	}
	
//   redirige_par_entete(parametre_url(str_replace("&","&",urldecode($redirect)),'message',$mes,'&'));
}
예제 #11
0
function instituer_rubrique($id_rubrique, $c) {
	// traitement de la rubrique parente
	// interdiction de deplacer vers ou a partir d'une rubrique
	// qu'on n'administre pas.

	$statut_ancien = $parent = '';
	if (NULL !== ($id_parent = $c['id_parent'])) {
		$id_parent = intval($id_parent);
		$filles = calcul_branche($id_rubrique);
		if (strpos(",$id_parent,", ",$filles,") !== false)
			spip_log("La rubrique $id_rubrique ne peut etre fille de sa descendante $id_parent");
		else {
			$s = sql_fetsel("id_parent, statut", "spip_rubriques", "id_rubrique=$id_rubrique");
			$old_parent = $s['id_parent'];

			if (!($id_parent != $old_parent
			AND autoriser('publierdans', 'rubrique', $id_parent)
			AND autoriser('creerrubriquedans', 'rubrique', $id_parent)
			AND autoriser('publierdans', 'rubrique', $old_parent)
			      )) {
				if ($s['statut'] != 'new') {
					spip_log("deplacement de $id_rubrique vers $id_parent refuse a " . $GLOBALS['visiteur_session']['id_auteur'] . ' '.  $GLOBALS['visiteur_session']['statut']);
				}
			} elseif (editer_rubrique_breves($id_rubrique, $id_parent, $c)) {
				$statut_ancien = $s['statut'];
				sql_updateq('spip_rubriques', array('id_parent' => $id_parent), "id_rubrique=$id_rubrique");


				propager_les_secteurs();

				// Deplacement d'une rubrique publiee ==> chgt general de leur statut
				if ($statut_ancien == 'publie')
					calculer_rubriques_if($old_parent, array('id_rubrique' => $id_parent), $statut_ancien);
				// Creation ou deplacement d'une rubrique non publiee
				// invalider le cache de leur menu
				elseif (!$statut_ancien || $old_parent!=$id_parent)
					effacer_meta("date_calcul_rubriques");

				calculer_langues_rubriques();

				return true;
			}
		}
	}
}