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; }
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); }
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'"); }
/** * 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}'"); } }
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; }
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 }
/** * 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,'&')); }
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; } } } }