orga en trunk, phase 3

svn/attic/branches/07/57354
maieul@maieul.net 12 years ago
commit b9bbfd78fd

14
.gitattributes vendored

@ -0,0 +1,14 @@
* text=auto !eol
/autoriser_rubrique_a_linscription.php -text
base/rubrique_a_linscription.php -text
exec/rubrique_a_linscription.php -text
fonds/rubrique_a_linscription.html -text
fonds/rubrique_a_linscription_bascule.html -text
formulaires/cfg_rubrique_a_linscription.html -text
formulaires/cfg_rubrique_a_linscription.php -text
formulaires/rubrique_a_linscription_bascule.html -text
formulaires/rubrique_a_linscription_bascule.php -text
lang/rubrique_a_linscription_fr.php -text
/plugin.xml -text
/rubrique_a_linscription.php -text
/rubrique_a_linscription.png -text

@ -0,0 +1,52 @@
<?php
function rubrique_a_linscription_autoriser(){}
function autoriser_rubrique_a_linscription($faire, $type, $id, $qui, $opt){
if ($faire == 'configurer'){
include_spip('inc/autoriser');
return autoriser_configurer_dist($faire,$type,$id,$qui,$opt);
}
}
function autoriser_voir($faire, $type, $id, $qui, $opt) {
include_spip('inc/autoriser');
$espace_prive_voir = unserialize(lire_meta('rubrique_a_linscription'));
$espace_prive_voir = $espace_prive_voir['espace_prive_voir'];
$resultat = sql_fetsel('rubrique_a_linscription,statut','spip_auteurs','id_auteur='.$qui['id_auteur']);
if (!$espace_prive_voir or is_null($resultat['rubrique_a_linscription'])){
return autoriser_voir_dist($faire, $type, $id, $qui, $opt);
}
$liste_rubriques_auteur = liste_rubriques_auteur($qui['id_auteur']);
if ($type == 'document')
return autoriser_document_voir_dist($faire, $type, $id, $qui, $opt);
if ($type == 'groupemots') {
$acces = sql_fetsel("comite,forum", "spip_groupes_mots", "id_groupe=".intval($id));
if ($qui['statut']=='1comite' AND ($acces['comite'] == 'oui' OR $acces['forum'] == 'oui'))
return true;
if ($qui['statut']=='6forum' AND $acces['forum'] == 'oui')
return true;
return false;
}
if ($type == 'rubrique'){
return in_array($id,$liste_rubriques_auteur);
}
if ($type == 'article' or $type == 'breve'){
$rubrique_objet = sql_getfetsel('id_rubrique','spip_'.$type.'s','id_'.$type.'='.$id);
if (in_array($rubrique_objet,$liste_rubriques_auteur)){
return autoriser_voir_dist($faire, $type, $id, $qui, $opt);
}
else{
return false;
}
}
return autoriser_voir_dist($faire, $type, $id, $qui, $opt);
}
?>

@ -0,0 +1,30 @@
<?php
function rubrique_a_linscription_upgrade($nom_meta_base_version,$version_cible){
$current_version = '0.1';
if( (!isset($GLOBALS['meta'][$nom_meta_base_version]))
|| (($current_version = $GLOBALS['meta'][$nom_meta_base_version])!=$version_cible)){
if (version_compare($current_version,'0.1','<=')){
spip_log('Mise à jour 0.1','rubrique_a_linscription');
ecrire_meta($nom_meta_base_version,$current_version='0.1','non');
}
if (version_compare($current_version,'0.2','<=')){
spip_log('Mise à jour 0.2','rubrique_a_linscription');
sql_alter("TABLE spip_auteurs ADD rubrique_a_linscription INT");
ecrire_meta($nom_meta_base_version,$current_version='0.2','non');
}
if (version_compare($current_version,'0.3','<=')){
spip_log('Mise à jour 0.3','rubrique_a_linscription');
$meta = unserialize(lire_meta('rubrique_a_linscription'));
$meta['statut'] = '0minirezo';
ecrire_meta('rubrique_a_linscription',serialize($meta));
ecrire_meta($nom_meta_base_version,$current_version='0.3','non');
ecrire_metas();
}
}
ecrire_metas();
}
?>

@ -0,0 +1,34 @@
<?php
function exec_rubrique_a_linscription_dist(){
if (!autoriser('configurer', 'rubrique_a_linscription')) {
include_spip('inc/minipres');
echo minipres();
die();
}
$commencer_page = charger_fonction('commencer_page', 'inc');
echo $commencer_page(_T('rubrique_a_linscription:rubrique_a_linscription'),'configuration','configuration');
//echo barre_onglets('configuration','rubrique_a_linscription');
echo "<br /> <br />";
include_spip('inc/presentation');
echo gros_titre(_T('rubrique_a_linscription:rubrique_a_linscription'),'', false);
echo barre_onglets("configuration", "rubriquelinscription");
// colonne gauche
echo debut_gauche('', true);
echo pipeline('affiche_gauche', array('args'=>array('exec'=>'rubrique_a_linscription'),'data'=>recuperer_fond('fonds/rubrique_a_linscription_bascule')));
// colonne droite
echo creer_colonne_droite('', true);
echo pipeline('affiche_droite', array('args'=>array('exec'=>'rubrique_a_linscription'),'data'=>''));
// centre
echo debut_droite('', true);
echo recuperer_fond('fonds/rubrique_a_linscription',array());
echo pipeline('affiche_milieu', array('args'=>array('exec'=>'rubrique_a_linscription'),'data'=>''));
//echo fin_gauche(), fin_page();
}
?>

@ -0,0 +1,8 @@
[(#CONFIG{accepter_inscriptions}|=={oui}|oui)<div class="ajax">
#FORMULAIRE_CFG_RUBRIQUE_A_LINSCRIPTION
</div>
]
[(#CONFIG{accepter_inscription}|=={oui}|non)
<p><:rubrique_a_linscription:accepter_inscription:>
]

@ -0,0 +1,3 @@
<div class='ajax'>
#FORMULAIRE_RUBRIQUE_A_LINSCRIPTION_BASCULE
</div>

@ -0,0 +1,75 @@
<!-- titre=Rubrique à l'inscription-->
<div class="formulaire_spip formulaire_editer formulaire_editer_rubrique_a_linscription" id="formulaire_editer_rubrique_a_linscription">
<form action="#ENV{action}" method="post">
#ACTION_FORMULAIRE{#ENV{action}}
<p class="explication"><:rubrique_a_linscription:cfg_explication:></p>
<fieldset>
<legend><:rubrique_a_linscription:cfg_generale:></legend>
<ul>
[<li class="editer_rubrique_mere obligatoire">
<label for="rubrique_mere"><:rubrique_a_linscription:cfg_id_parent:></label>
(#VAL|chercher_rubrique{0,#ENV{id_parent},'rubrique','',''})
</li>]
<li class="editer_argument_explicite">
<input name="argument_explicite" type="checkbox" id="argument_explicite"[ checked="checked"(#ENV{argument_explicite}|oui)]>
<label for="argument_explicite"><:rubrique_a_linscription:cfg_argument_explicite:></label>
</li>
<B_groupes>
<li class="editer_groupe_mots">
<label for="groupe_mots"><:rubrique_a_linscription:cfg_groupes_mots:></label>
<select id="groupe_mots" name="groupe_mots">
<option value="0"><:rubrique_a_linscription:cfg_pas_creer_mot:></option>
<BOUCLE_groupes(GROUPES_MOTS){par num titre, titre}>
<option value="#ID_GROUPE"[ selected="(#ENV{groupe_mots}|=={#ID_GROUPE}|oui)"]>#TITRE</option>
</BOUCLE_groupes>
</select>
</li>
</B_groupes>
<li class="editer_statut">
<label for="statut"><:rubrique_a_linscription:cfg_statut:></label>
<select id="statut" name="statut">
<option value="1comite"[ selected="(#ENV{statut}|=={1comite}|oui)"]><:auteur:></option>
<option value="0minirezo"[ selected="(#ENV{statut}|=={0minirezo}|oui)"]><:statut_admin_restreint:></option>
</select>
</li>
<p class="explication"><:rubrique_a_linscription:cfg_avertissement_changement:></p>
</ul>
</fieldset>
<fieldset>
<legend><:rubrique_a_linscription:cfg_espace_prive:></legend>
<ul>
<li class="editer_espace_prive_voir">
<input type="checkbox" class="checkbox" name="espace_prive_voir" id="espace_prive_voir"[ checked="checked"(#ENV{espace_prive_voir}|oui)]>
<label for="espace_prive_voir"><:rubrique_a_linscription:cfg_espace_prive_voir:></label>
</li>
</ul>
</fieldset>
<fieldset>
<legend><:rubrique_a_linscription:cfg_mail:></legend>
<ul>
<li class="editer_mail_public">
<input type="checkbox" class="checkbox" name="mail_public" id="mail_public"[ checked="checked"(#ENV{mail_public}|oui)]>
<label for="mail_public"><:rubrique_a_linscription:cfg_mail_public:></label>
</li>
<li class="editer_mail_prive">
<input type="checkbox" class="checkbox" name="mail_prive" id="mail_prive"[ checked="checked"(#ENV{mail_prive}|oui)]>
<label for="mail_prive"><:rubrique_a_linscription:cfg_mail_privee:></label>
</li>
</ul>
</fieldset>
<p class="boutons"><input type="submit" name="ok" value="OK" /></p>
</form>
</div>

@ -0,0 +1,32 @@
<?php
include_spip('inc/meta');
function formulaires_cfg_rubrique_a_linscription_charger(){
$meta = unserialize(lire_meta('rubrique_a_linscription'));
$id_parent = $meta['id_parent'] ? $meta['id_parent'] : 0 ;
return array('id_parent'=>$id_parent,'mail_prive'=>$meta["mail_prive"],'mail_public'=>$meta["mail_public"],'espace_prive_voir'=>$meta["espace_prive_voir"],'groupe_mots'=>$meta["groupe_mots"],'statut'=>$meta['statut'],'argument_explicite'=>$meta['argument_explicite']);
}
function formulaires_cfg_rubrique_a_linscription_verifier(){
return array();
}
function formulaires_cfg_rubrique_a_linscription_traiter(){
$meta = array(
'id_parent' => _request('id_parent'),
'mail_public' => _request('mail_public'),
'mail_prive' => _request('mail_prive'),
'espace_prive_voir' => _request('espace_prive_voir'),
'groupe_mots' => _request('groupe_mots'),
'statut' => _request('statut'),
'argument_explicite' => _request('argument_explicite')
);
spip_log('Mise à jour des réglages '.var_export($meta,true),'rubrique_a_linscription');
$meta = serialize($meta);
ecrire_meta('rubrique_a_linscription',$meta);
ecrire_metas();
return array();
}
?>

@ -0,0 +1,25 @@
<B_auteurs>
<div class="formulaire_spip formulaire_rubrique_a_linscription_bascule">
<form action="#ENV{action}" method="post">
<div>
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV{message_ok})</p>]
#ACTION_FORMULAIRE{#ENV{action}}
<p class="explication"><:rubrique_a_linscription:explication_bascule:></p>
[<div class="pagination">(#PAGINATION)</div>]
<ul>
<BOUCLE_auteurs(AUTEURS){id_auteur?}{tout}{rubrique_a_linscription!=NULL}{par nom}{pagination 60}>
<li>
<label for="id_auteur_#ID_AUTEUR">#NOM</label>
<input type="checkbox" name="xd_auteur[]" id="id_auteur_#ID_AUTEUR" value="#ID_AUTEUR" />
</li>
</BOUCLE_auteurs>
</ul>
[<div class="pagination">(#PAGINATION)</div>]
<p class="boutons"><input type="submit" class="submit" value="<:pass_ok:>" /></p>
</div>
</form>
</div>
</B_auteurs>

@ -0,0 +1,27 @@
<?php
function formulaires_rubrique_a_linscription_bascule_charger(){
return array();
}
function formulaires_rubrique_a_linscription_bascule_verifier(){
return array();
}
function formulaires_rubrique_a_linscription_bascule_traiter(){
$id_auteurs = _request('xd_auteur');
if (gettype($id_auteurs)=='array'){
include_spip('base/abstract_sql');
foreach ($id_auteurs as $id_auteur){
sql_update("spip_auteurs",array('rubrique_a_linscription'=>gettype($null)),"id_auteur = $id_auteur");
spip_log("Bascule de l'auteur $id_auteur en mode auteur normal",'rubrique_a_linscription');
}
}
return array('message_ok'=>_T('rubrique_a_linscription:auteur_bascule',array('id_auteurs'=>implode(',',$id_auteurs))));
}
?>

@ -0,0 +1,36 @@
<?php
/** Fichier de langue de SPIP **/
if (!defined("_ECRIRE_INC_VERSION")) return;
$GLOBALS[$GLOBALS['idx_lang']] = array(
'accepter_inscription' =>"Pour utiliser ce plugin vous devez <a href='?exec=config_contenu#configurer-redacteurs'>autoriser l'inscription de rédacteurs</a>.",
'auteur_bascule' =>'Les auteurs @id_auteurs@ ont bien été basculés',
'cfg_pas_creer_mot' =>'Ne pas créer de mot clef',
'cfg_argument_explicite' =>'Le formulaire d\'inscription ne crée la rubrique ad hoc que si on lui passe l\'argument {rubrique_a_linscription}',
'cfg_avertissement_changement' => 'Attention : si vous modifiez ce paramètre, les rubriques déja créées ne changeront pas de place pour autant.',
'cfg_espace_prive_voir' => "Ne pas autoriser les auteurs ainsi créés à voir d'autres rubriques dans l'espace privé",
'cfg_espace_prive' => "Lien avec l'espace privé",
'cfg_explication' => "Ce plugin propose de créer automatiquement une rubrique lorsqu'une personne s'inscrit sur le site. La personne inscrite reçoit les droits d'administrations sur cette rubrique",
'cfg_generale' => 'Configuration générale',
'cfg_groupes_mots' => 'Créer automatiquement un mot dans le groupe : ',
'cfg_id_parent' => 'Rubrique mère des rubriques créées',
'cfg_mail' => 'Envoyer un mail au nouvel inscrit avec :',
'cfg_mail_public' => 'L\'adresse publique de la rubrique',
'cfg_mail_privee' => 'L\'adresse privée de la rubrique',
'cfg_statut' => 'Statut des auteurs',
'explication_bascule' => 'Cochez les auteurs à basculer en auteur "Normal" (ne supprime pas pour autant la restriction d\'administration.).',
'mail_adresse_rubrique' =>"L'adresse de votre rubrique reservée est : \n",
'rubrique_a_linscription' => 'Rubrique à l\'inscription',
'titre_mail_adresse_rubrique'=> 'Votre rubrique reservée',
'titre_rubrique' => 'Rubrique de @nom@',
'mot_clef_de' => 'Mot-clef de @nom@',
'rubrique_reserve_0minirezo'=>"L'espace privé de ce site est ouvert aux visiteurs, après inscription. Une fois enregistré, vous pourrez consulter les articles en cours de rédaction, proposer des articles et participer à tous les forums. Vous disposerez également d'une rubrique réservée où vous pourrez poster vos articles.",
'rubrique_reserve_1comite'=>"L'espace privé de ce site est ouvert aux visiteurs, après inscription. Une fois enregistré, vous pourrez consulter les articles en cours de rédaction, proposer des articles et participer à tous les forums. Vous disposerez également d'une rubrique réservée où vous pourrez proposer vos articles.",
'rubrique_reserve_0minirezo_on'=>"L'espace privé de ce site est ouvert aux visiteurs, après inscription. Une fois enregistré, vous disposerez d'une rubrique réservée où vous pourrez poster vos articles.",
'rubrique_reserve_1comite_on'=>"L'espace privé de ce site est ouvert aux visiteurs, après inscription. Une fois enregistré, vous disposerez d'une rubrique réservée où vous pourrez proposer vos articles."
);
?>

@ -0,0 +1,45 @@
<plugin>
<!-- Nom du plugin -->
<nom>Rubrique &#224; l'inscription</nom>
<slogan>Cr&#233;er une rubrique &#224; l'inscription d'un admin</slogan>
<!-- Auteur du plugin -->
<auteur>[Ma&#239;eul Rouquette->http://www.maieul.net] sur une id&#233;e de Jean-No&#235;l Moreau</auteur>
<version>0.6.0</version>
<version_base>0.3</version_base>
<etat>stable</etat>
<lien>http://www.spip-contrib.net/Rubrique-a-l-inscription</lien>
<description> Si le formulaire d'inscription est pass&#233; avec l'argument 0minirezo (<code>#FORMULAIRE_INSCRIPTION{0minirezo}</code>), une rubrique est automatiquement cr&#233;&#233;e, o&#249; l'auteur est admin restreint.</description>
<icon>rubrique_a_linscription.png</icon>
<prefix>rubrique_a_linscription</prefix>
<inscription>base/rubrique_a_linscription.php</inscription>
<onglet id="rubriquelinscription" parent="configuration">
<icone>prive/images/admin-12.gif</icone>
<titre>rubrique_a_linscription:rubrique_a_linscription</titre>
<url>rubrique_a_linscription</url>
</onglet>
<bouton id='rubriquelinscription' parent="bando_configuration">
<icone>prive/images/admin-12.gif</icone>
<titre>rubrique_a_linscription:rubrique_a_linscription</titre>
<url>rubrique_a_linscription</url>
</bouton>
<pipeline>
<nom>formulaire_traiter</nom>
<inclure>rubrique_a_linscription.php</inclure>
</pipeline>
<pipeline>
<nom>formulaire_charger</nom>
<inclure>rubrique_a_linscription.php</inclure>
</pipeline>
<pipeline>
<nom>autoriser</nom>
<inclure>autoriser_rubrique_a_linscription.php</inclure>
</pipeline>
<install>base/rubrique_a_linscription.php</install>
<necessite id="SPIP" version="[2.0.0;3.0.99]" />
<lien>http://www.spip-contrib.net/Rubrique-a-l-inscription</lien>
<categorie>auteur</categorie>
</plugin>

@ -0,0 +1,85 @@
<?php
/*charger*/
function rubrique_a_linscription_formulaire_charger($flux){
$meta = unserialize(lire_meta('rubrique_a_linscription'));
if ($flux['args']['form']=='inscription' and lire_meta('accepter_inscriptions')=='oui' and (!$meta['argument_explicite']) or ($meta['argument_explicite']=='on' and $flux['args']['args'][0] == 'rubrique_a_linscription')){
$flux['args']['args'][0] = $meta['statut'];
$flux['data']['_commentaire'] = _T('rubrique_a_linscription:rubrique_reserve_'.$meta['statut'].'_'.$meta['espace_prive_voir']);
}
return $flux;
}
/* Traiter */
function rubrique_a_linscription_formulaire_traiter($flux){
$meta = unserialize(lire_meta('rubrique_a_linscription'));
if ($flux['args']['form']=='inscription' and (!$meta['argument_explicite']) or ($meta['argument_explicite']=='on' and $flux['args']['args'][0] == 'rubrique_a_linscription')){
// Récuperation des paramètres
$mail = _request('mail_inscription');
$nom_inscription = str_replace('@',' (chez) ',_request('nom_inscription'));
include_spip('base/abstract_sql');
$id_auteur = sql_getfetsel('id_auteur','spip_auteurs','email='.sql_quote($mail));
//Modification du statut temporaire
sql_updateq('spip_auteurs',array('bio'=>$meta['statut']),'id_auteur='.$id_auteur);
// Création de la rubrique
if (!$meta['id_parent'] or $meta['id_parent']==0){
$id_rubrique = sql_insertq("spip_rubriques", array('titre'=> _T('rubrique_a_linscription:titre_rubrique',array('nom'=>$nom_inscription)), 'id_secteur'=> 0));
sql_update("spip_rubriques",array("id_secteur"=>$id_rubrique), "id_rubrique=".$id_rubrique);
}
else{
$id_secteur = sql_getfetsel('id_secteur','spip_rubriques','id_rubrique='.$meta['id_parent']);
$id_rubrique = sql_insertq("spip_rubriques", array('titre'=> _T('rubrique_a_linscription:titre_rubrique',array('nom'=>$nom_inscription)), 'id_secteur'=> $id_secteur,'id_parent'=>$meta['id_parent']));
}
sql_insertq('spip_auteurs_rubriques', array(
'id_auteur' => $id_auteur,
'id_rubrique' => $id_rubrique));
spip_log('Création de la rubrique '.$id_rubrique.' pour l\'auteur '.$nom_inscription.' ( '.$mail.' )','rubrique_a_linscription');
//On ajoute la rubrique chez l'auteur
sql_update('spip_auteurs',array('rubrique_a_linscription'=>$id_rubrique),"id_auteur=$id_auteur");
//Création du mot clef associé
if($meta['groupe_mots']){
$type = sql_getfetsel('titre','spip_groupes_mots','id_groupe='.$meta['groupe_mots']);
if ($type){
$id_mot = sql_insertq('spip_mots',array('id_groupe'=>$meta['groupe_mots'],'type'=>$type,'titre'=>_T('rubrique_a_linscription:mot_clef_de',array('nom'=>$nom_inscription))));
spip_log("Création du mot clef dans le groupe $type pour l'auteur $nom_inscription (id mot = $id_mot)",'rubrique_a_linscription');
}
}
//Envoyer mails
if ($meta['mail_public'] or $meta['mail_prive']){
$envoyer_mail = charger_fonction('envoyer_mail','inc');
$corps = _T('rubrique_a_linscription:mail_adresse_rubrique');
include_spip('inc/utils');
if ($meta['mail_public']){
$corps .= "-".generer_url_public("rubrique","id_rubrique=$id_rubrique")."\n";
}
if ($meta['mail_prive']){
$corps .= "-".generer_url_ecrire("naviguer","id_rubrique=$id_rubrique")."\n";
}
include_spip('inc/filtres');
$envoyer_mail($mail,'['.extraire_multi(lire_meta('nom_site')).']'. _T('rubrique_a_linscription:titre_mail_adresse_rubrique'),$corps);
}
}
return $flux;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Loading…
Cancel
Save