Beispiel #1
0
/**
 * Action de réparation de la base de données
 *
 * Tente de réparer les tables, recalcule les héritages et secteurs
 * de rubriques. Affiche les erreurs s'il y en a eu.
 *
 * @pipeline_appel base_admin_repair
 * @uses admin_repair_tables()
 * @uses calculer_rubriques()
 * @uses propager_les_secteurs()
 *
 * @param string $titre Inutilisé
 * @param string $reprise Inutilisé
 **/
function base_repair_dist($titre = '', $reprise = '')
{
    $res = admin_repair_tables();
    if (!$res) {
        $res = "<div class='error'>" . _T('avis_erreur_mysql') . ' ' . sql_errno() . ': ' . sql_error() . "</div>\n";
    } else {
        include_spip('inc/rubriques');
        calculer_rubriques();
        propager_les_secteurs();
    }
    include_spip('inc/minipres');
    $res .= pipeline('base_admin_repair', $res);
    echo minipres(_T('texte_tentative_recuperation'), $res . generer_form_ecrire('accueil', '', '', _T('public:accueil_site')));
}
Beispiel #2
0
function reorganiser_rubrique_rubrique($id_quoi, $id_cible)
{
    if ($id_quoi != $id_cible and autoriser('modifier', 'rubrique', $id_cible) and autoriser('modifier', 'rubrique', $id_quoi)) {
        if (!$id_cible) {
            $id_secteur = $id_quoi;
        } else {
            $id_secteur = sql_getfetsel("id_secteur", "spip_rubriques", "id_rubrique={$id_cible}");
        }
        $s = sql_fetsel("statut, id_parent, id_secteur", "spip_rubriques", "id_rubrique=" . intval($id_quoi));
        sql_updateq('spip_rubriques', array('id_parent' => $id_cible, 'id_secteur' => $id_secteur), "id_rubrique=" . intval($id_quoi));
        include_spip('inc/rubriques');
        // propager les secteurs si besoin
        if ($s['id_secteur'] != $id_secteur) {
            propager_les_secteurs();
        }
        // changer le statut de la rubrique source
        if ($s['statut'] == 'publie') {
            calculer_rubriques_if($s['id_parent'], array('id_rubrique' => $id_cible), 'publie');
        }
    }
}
Beispiel #3
0
function base_admin_repair_dist($titre='', $reprise='') {

	$f = sql_repair('repair', NULL, true);
	if ($f) {
		$res = admin_repair_tables();
	} else {
		if ($titre)
		  spip_log("Pas d'instruction REPAIR dans ce serveur SQL");
		$res = '     ';
	}

	if (!$res) {
		$res = "<br /><br /><span style='color: red; font-weight: bold;'><tt>"._T('avis_erreur_mysql').' '.sql_errno().': '.sql_error() ."</tt></span><br /><br /><br />\n";
	} else {
		include_spip('inc/rubriques');
		calculer_rubriques();
		propager_les_secteurs();
	}
	include_spip('inc/minipres');
	$res .= pipeline('base_admin_repair',$res);
	$res .= admin_repair_plat();
	echo minipres(_T('texte_tentative_recuperation'),
			$res . generer_form_ecrire('accueil', '','',_T('public:accueil_site')));
}
/**
 * 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
}
/**
 * Mise à jour pour recalculer les secteurs des rubriques
 *
 * @uses propager_les_secteurs()
 **/
function maj_propager_les_secteurs()
{
    include_spip('inc/rubriques');
    propager_les_secteurs();
}
Beispiel #6
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("&amp;","&",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("&amp;","&",urldecode($redirect)),'message',$mes,'&'));
}
Beispiel #7
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;
			}
		}
	}
}