Changeset 49891 in spip-zone for _plugins_/abonnement


Ignore:
Timestamp:
Jul 24, 2011, 1:23:49 PM (9 years ago)
Author:
toutati@…
Message:

post_edition de l'auteur permet d'avoir (avec statut offert) un abonnement aux objets : abonnements rubriques ou articles

generiser au maximum, permet donc de fusionner avec post_edition zaboarticle qui dsiparait

Location:
_plugins_/abonnement
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/abonnement/zaboarticle/trunk/plugin.xml

    r49834 r49891  
    33        <auteur>Anne-lise Martenot (elastick.net) - BoOz (booz@reo.net)
    44        </auteur>
    5         <version>0.2</version>
     5        <version>0.3</version>
    66        <etat>
    77        test
     
    2525                <nom>post_insertion</nom>
    2626                <inclure>zaboarticle_pipelines.php</inclure>
    27         </pipeline>
    28         <pipeline>
    29                 <nom>post_edition</nom>
    30                 <inclure>zaboarticle_pipelines.php</inclure>
    3127        </pipeline>
    3228        <pipeline>
  • _plugins_/abonnement/zaboarticle/trunk/prive/zaborubrique_fiche.html

    r49886 r49891  
    1515        [(#AUTORISER{modifier,#ENV{objet},#ENV{id_objet}}|oui)
    1616        [(#BOUTON_ACTION{
    17                 [(#CHEMIN{images/supprimer-16.png}|balise_img{<:abo:supprimer_acces_rubrique:>})],
     17                [(#CHEMIN{images/supprimer-16.png}|balise_img{<:abo:confirmer_supprimer_element:>})],
    1818                [(#URL_ACTION_AUTEUR{supprimer_contactabonnement,contactabonnement-#ENV{id_auteur}-#ID_OBJET-#OBJET,[(#ENV{retour,#SELF})]})],
    1919                ajax,
  • _plugins_/abonnement/zaboarticle/trunk/zaboarticle_pipelines.php

    r49886 r49891  
    1515        // On recupere le contenu des articles dans les details de la commande
    1616                $commande_abos = sql_allfetsel(
    17                         '*',
    18                         'spip_commandes_details',
    19                         'id_commande = '.$id_commande." AND objet='article'"
     17                '*',
     18                'spip_commandes_details',
     19                'id_commande = '.$id_commande." AND objet='article'"
    2020                );
    2121        // On recupere le id_auteur (unique) du flux data
     
    2626        // Pour chaque commande d'article
    2727                foreach($commande_abos as $abo){
    28                         $id_article = $abo['id_objet'];
    29                         if (_DEBUG_ABONNEMENT) spip_log('zaboarticle_post_insertion > id_article='.$id_article.'et auteur= '.$id_auteur,'abonnement');
    30                         $date = date('Y-m-d H:i:s');
    31                         $duree = 3; //valable 3 jours
    32                         $validite = date('Y-m-d H:i:s', mktime(date('H'),date('i'),date('s'),date('n'),date('j')+$duree,date('Y')));
     28                $id_article = $abo['id_objet'];
     29                if (_DEBUG_ABONNEMENT) spip_log('zaboarticle_post_insertion > id_article='.$id_article.'et auteur= '.$id_auteur,'abonnement');
     30                $date = date('Y-m-d H:i:s');
     31                $duree = 3; //valable 3 jours
     32                $validite = date('Y-m-d H:i:s', mktime(date('H'),date('i'),date('s'),date('n'),date('j')+$duree,date('Y')));
    3333
    34                                        
    35                         // attention aux doublons, on verifie
    36                         if ((!$id = sql_getfetsel('id_auteur','spip_contacts_abonnements','id_auteur='.$id_auteur.' and objet=article and id_article='.sql_quote($id_article).' and validite > NOW()')))
    37                                                 sql_insertq("spip_contacts_abonnements",
    38                                                         array(
    39                                                         "id_auteur"=>$id_auteur,
    40                                                         "objet"=>'article',
    41                                                         "id_objet"=>$id_article,
    42                                                         'date' => $date,
    43                                                         'validite'=>$validite,
    44                                                         'statut_abonnement'=>'paye',
    45                                                         'prix'=>$abo['prix_unitaire_ht'])
    46                                                         );
     34                               
     35                // attention aux doublons, on verifie
     36                if ((!$id = sql_getfetsel('id_auteur','spip_contacts_abonnements','id_auteur='.$id_auteur.' and objet=article and id_article='.sql_quote($id_article).' and validite > NOW()')))
     37                                sql_insertq("spip_contacts_abonnements",
     38                                        array(
     39                                        "id_auteur"=>$id_auteur,
     40                                        "objet"=>'article',
     41                                        "id_objet"=>$id_article,
     42                                        'date' => $date,
     43                                        'validite'=>$validite,
     44                                        'statut_abonnement'=>'paye',
     45                                        'prix'=>$abo['prix_unitaire_ht'])
     46                                        );
    4747                }
    4848
     
    5353}
    5454
    55 
    5655//espace prive
    5756//affiche les articles auxquels l'auteur est abonne (sur auteur_infos)
    5857function zaboarticle_affiche_milieu($flux){
    5958        if($flux['args']['exec'] == 'auteur_infos') {
    60                 $legender_auteur_supp = recuperer_fond('prive/zaboarticle_fiche',array('id_auteur'=>$flux['args']['id_auteur']));
     59                $legender_auteur_supp = recuperer_fond('prive/zaborubrique_fiche',array('id_auteur'=>$flux['args']['id_auteur']));
     60                $legender_auteur_supp .= recuperer_fond('prive/zaboarticle_fiche',array('id_auteur'=>$flux['args']['id_auteur']));
    6161                $flux['data'] .= $legender_auteur_supp;
    6262        }
     
    6767function zaboarticle_editer_contenu_objet($flux){
    6868        if ($flux['args']['type']=='auteur') {
     69                $zabo = recuperer_fond('prive/zaborubrique_fiche_modif',array('id_auteur'=>$flux['args']['id']));
     70                $zabo .= recuperer_fond('prive/zaboarticle_fiche_modif',array('id_auteur'=>$flux['args']['id']));
    6971
    70                 $zaboarticle = recuperer_fond('prive/zaboarticle_fiche_modif',array('id_auteur'=>$flux['args']['id']));
    71 
    72                 $flux['data'] = preg_replace('%(<li class="editer_pgp(.*?)</li>)%is', '$1'."\n".$zaboarticle, $flux['data']);
     72                $flux['data'] = preg_replace('%(<!--editer_abonnement-->)%is', '$1'."\n".$zabo, $flux['data']);
    7373        }
    7474        return $flux;
    7575}
    7676
    77 
    78 /**
    79  *
    80  * Insertion dans le pipeline post_edition
    81  * ajouter les champs abonnement aux articles soumis lors de la soumission du formulaire CVT editer_auteur
    82  *
    83  */
    84  /*
    85 $flux['args']['action'] = modifier
    86  il faudrait savoir si on est dans prive ou en public
    87  todo car determine si paiement possible...
    88  ne sert actuellement que dans le backoffice en 'cadeau' (statut paye sans lien a une commande)
    89  */
    90 function zaboarticle_post_edition($flux){
    91                
    92         // lors de l'edition d'un auteur
    93         if ($flux['args']['table']=='spip_auteurs') {
    94                
    95                 $id_auteur = $flux['args']['id_objet'];
    96                 $articles = _request('articles') ;
    97                 $rubriques = _request('rubriques') ; //todo?
    98                 $statut_abonnement='offert';
    99                
    100                 if ($articles && is_array($articles)) {
    101                         foreach($articles as $key => $id_article){
    102                                 if($id_article!='non'){
    103                                 $article = sql_fetsel('*', 'spip_articles', 'id_article = ' . $id_article);
    104                                 if (!$article) {
    105                                         if (_DEBUG_ABONNEMENT) spip_log("article $id_article inexistant",'abonnement');
    106                                         die("article $id_article inexistant");
    107                                 }
    108                                 //todo verifier avec plugin montants?
    109                                 $calculer_prix = charger_fonction('prix', 'inc/');
    110                                 $prix=($statut_abonnement=='offert')?'':$calculer_prix('article',$id_article);//pas de prix puisque offert
    111                                 $date = date('Y-m-d H:i:s');
    112                                 $duree = 3; //valable 3 jours
    113                                 $validite = date('Y-m-d H:i:s', mktime(date('H'),date('i'),date('s'),date('n'),date('j')+$duree,date('Y')));
    114 
    115                                 if (_DEBUG_ABONNEMENT) spip_log("zaboarticle_post_edition article $id_article prix $prix date $validite",'abonnement');
    116 
    117                                 if (!$id = sql_getfetsel('id_auteur',
    118                                         'spip_contacts_abonnements',
    119                                         'id_auteur='.$id_auteur.' AND id_objet='.sql_quote($id_article)." AND objet='article'")
    120                                         )
    121                                 sql_insertq("spip_contacts_abonnements",array(
    122                                         'id_auteur'=> $id_auteur,
    123                                         'objet'=>'article',
    124                                         'id_objet' => $id_article,
    125                                         'date'=>$date,
    126                                         'validite'=>$validite,
    127                                         'statut_abonnement'=>$statut_abonnement,
    128                                         'prix'=>$prix));
    129                         }
    130                         }       
    131                 }
    132                
    133                 // Notifications, gestion des revisions, reindexation...
    134                 pipeline('post_edition',
    135                         array(
    136                                 'args' => array(
    137                                         'table' => 'spip_contacts_abonnements',
    138                                         'id_auteur' => $id_auteur,
    139                                         'objet'=>'article',
    140                                         'id_objet' => $id_article,
    141                                         'statut_abonnement' => $statut_abonnement
    142                                 ),
    143                                 'data' => $auteur
    144                         )
    145                 );
    146         }
    147 
    148         return $flux;
    149 }
    150 
    151 
    15277?>
  • _plugins_/abonnement/zabonnement/trunk/abonnement_pipelines.php

    r49886 r49891  
    3838                       
    3939                        $date = date('Y-m-d H:i:s');
    40                         $ids_zone=$abonnement['ids_zone'];
     40                        $ids_zone=$verif['ids_zone'];
    4141                        if($ids_zone!='')
    4242                        ouvrir_zone($id_auteur,$ids_zone);
    4343                                       
    4444                                        // jour
    45                                         if ($abonnement['periode'] == 'jours') {
    46                                                 $validite = date('Y-m-d H:i:s', mktime(date('H'),date('i'),date('s'),date('n'),date('j')+$abonnement['duree'],date('Y')));
     45                                        if ($verif['periode'] == 'jours') {
     46                                                $validite = date('Y-m-d H:i:s', mktime(date('H'),date('i'),date('s'),date('n'),date('j')+$verif['duree'],date('Y')));
    4747                                        }
    4848                                        // ou mois
    4949                                        else {
    50                                                 $validite = date('Y-m-d H:i:s', mktime(date('H'),date('i'),date('s'),date('n')+$abonnement['duree'],date('j'),date('Y')));
     50                                                $validite = date('Y-m-d H:i:s', mktime(date('H'),date('i'),date('s'),date('n')+$verif['duree'],date('j'),date('Y')));
    5151                                        }
    5252                                       
     
    147147 */
    148148function abonnement_post_edition($flux){
    149 
    150         // lors de l'edition d'un auteur       
     149               
     150        // lors de l'edition d'un auteur
    151151        if ($flux['args']['table']=='spip_auteurs') {
    152152        $continue=false;
    153153       
    154154                $id_auteur = $flux['args']['id_objet'];
    155                 $abonnements = _request('abonnements') ;
     155               
     156                $abonnements = _request('abonnements');
     157                $rubriques = _request('rubriques');
     158                $articles = _request('articles');
    156159                $echeances = _request('validites');
     160               
    157161                $statut_abonnement='offert';
     162                $duree = 3; //valable 3 jours, todo in config
     163               
     164                if ($articles && is_array($articles)) {
     165                $objet='article';
     166                $ids=$articles;
     167                $table="spip_articles";
     168                creer_abonnement_objet($id_auteur,$statut_abonnement,$objet,$table,$ids,$duree);
     169                }
     170               
     171                if ($rubriques && is_array($rubriques)) {
     172                $objet='rubrique';
     173                $ids=$rubriques;
     174                $table="spip_rubriques";
     175                creer_abonnement_objet($id_auteur,$statut_abonnement,$objet,$table,$ids,$duree);
     176                }
    158177               
    159178                if ($abonnements && is_array($abonnements)) {
    160                         $objet='abonnement';
    161                         $objets=$abonnements;
    162                         $table="spip_abonnements";
    163                         $continue=true;
    164                 }
    165                
    166                 if ($continue) {
    167                         foreach($objets as $key => $id_objet)   {
    168                                 if($id_objet!='non'){
     179                $objet='abonnement';
     180                $ids=$abonnements;
     181                $table="spip_abonnements";
     182                creer_abonnement_objet($id_auteur,$statut_abonnement,$objet,$table,$ids,$duree);
     183                }
     184
     185        }
     186
     187        return $flux;
     188}
     189
     190function creer_abonnement_objet($id_auteur,$statut_abonnement,$objet,$table,$ids,$duree)
     191{
     192        foreach($ids as $key => $id_objet)
     193        {
     194                if($id_objet!='non')
     195                {
    169196                               
    170                                         // abonnement non trouve ?
    171                                         $abonnement = sql_fetsel('*', 'spip_abonnements', 'id_abonnement = ' . $id_objet);
    172                                         if (!$abonnement) {
    173                                                 if (_DEBUG_ABONNEMENT) spip_log("abonnement $id_objet inexistant",'abonnement');
    174                                                 die("abonnement $id_objet inexistant");
    175                                         }
    176                                        
    177                                         $date = date('Y-m-d H:i:s');
    178                                         $duree = $abonnement['duree'];
    179                                         $periode = $abonnement['periode'];
    180                                        
    181                                         // jour
    182                                         if ($periode == 'jours') {
    183                                                 $validite = date('Y-m-d H:i:s', mktime(date('H'),date('i'),date('s'),date('n'),date('j')+$duree,date('Y')));
    184                                         }
    185                                         // ou mois
    186                                         else {
    187                                                 $validite = date('Y-m-d H:i:s', mktime(date('H'),date('i'),date('s'),date('n')+$duree,date('j'),date('Y')));
    188                                         }
    189                                        
    190                                        
    191                                         $prix=($statut_abonnement=='offert')?'':$abonnement['prix'];//pas de prix puisque offert
    192 
    193                                        
    194                                         if (_DEBUG_ABONNEMENT) spip_log("abonnement_post_edition $objet $id_objet et $table pour $validite",'abonnement');
    195 
    196                                         // attention aux doublons, on verifie
    197                                         $deja = sql_fetsel('id_auteur,validite','spip_contacts_abonnements','id_auteur='.$id_auteur.' and id_objet='.sql_quote($id_objet)." and objet='$objet'");
    198                                         if (!$deja['id_auteur']){
    199                                                
    200                                                 $ids_zone=$abonnement['ids_zone'];
    201                                                 if($ids_zone!='')
    202                                                 ouvrir_zone($id_auteur,$ids_zone);
     197                        $verif = sql_fetsel('*', $table, 'id_'."$objet = " . $id_objet);
     198                        if (!$verif)
     199                        {
     200                                if (_DEBUG_ABONNEMENT) spip_log("$objet $id_objet inexistant",'abonnement');
     201                                die("$objet $id_objet inexistant");
     202                        }
     203                       
     204                        //todo verifier avec plugin montants?
     205                        $calculer_prix = charger_fonction('prix', 'inc/');
     206                        $prix=($statut_abonnement=='offert')?'':$calculer_prix($objet,$id_objet);//pas de prix puisque offert
     207                        $date = date('Y-m-d H:i:s');
     208                        $validite = date('Y-m-d H:i:s', mktime(date('H'),date('i'),date('s'),date('n'),date('j')+$duree,date('Y')));
     209                       
     210                        //specific a abonnement
     211                        if($objet=='abonnement'){
     212                                $prix=($statut_abonnement=='offert')?'':$verif['prix'];//pas de prix puisque offert
     213                                $duree = $verif['duree'];
     214                                $periode = $verif['periode'];
     215                                       
     216                                // jour
     217                                if ($periode == 'jours') {
     218                                        $validite = date('Y-m-d H:i:s', mktime(date('H'),date('i'),date('s'),date('n'),date('j')+$duree,date('Y')));
     219                                }
     220                                // ou mois
     221                                else {
     222                                        $validite = date('Y-m-d H:i:s', mktime(date('H'),date('i'),date('s'),date('n')+$duree,date('j'),date('Y')));
     223                                }
     224                        }
    203225                               
    204                                                 sql_insertq("spip_contacts_abonnements",array(
    205                                                         'id_auteur'=> $id_auteur,
    206                                                         'id_objet'=> $id_objet,
    207                                                         'objet'=>'abonnement',
    208                                                         'date'=>$date,
    209                                                         'validite'=>$validite,
    210                                                         'statut_abonnement'=>$statut_abonnement,
    211                                                         'prix'=>$prix
    212                                                         ));
    213                                         }else{
    214                                                 if (_DEBUG_ABONNEMENT) spip_log("abonnement_post_edition pour auteur=$id_auteur $objet $id_objet existe deja donc todo rallonger date= $validite + newdate",'abonnement');
    215                                                 //modif des dates d'echeances
    216                                                 if($echeances[$key]!='' && ($echeances[$key]!=$deja['validite'])){
    217                                                         if (_DEBUG_ABONNEMENT) spip_log("effectivement ". $echeances[$key]."!=".$deja['validite'],'abonnement');
    218                                                 sql_updateq("spip_contacts_abonnements",array('validite'=>$echeances[$key]),
    219                                                         'id_auteur='.$id_auteur.' and id_objet='.sql_quote($id_objet)." and objet='$objet'");
    220                                                 }
    221                                         }
    222                                
    223                                 }
    224                
    225                         }       
    226                 }
    227                
    228                 // Notifications, gestion des revisions, reindexation...
    229                 pipeline('post_edition',
    230                         array(
    231                                 'args' => array(
    232                                         'table' => 'spip_contacts_abonnements',
    233                                         'id_auteur' => $id_auteur,
     226                        if (_DEBUG_ABONNEMENT) spip_log("zaboarticle_post_edition $objet $id_objet date $validite",'abonnement');
     227
     228                        if (!$deja = sql_getfetsel('id_auteur,validite',
     229                                'spip_contacts_abonnements',
     230                                'id_auteur='.$id_auteur.' AND id_objet='.sql_quote($id_objet)." AND objet='$objet'")
     231                                )
     232                        {
     233                                $ids_zone=$verif['ids_zone'];
     234                                if($ids_zone!='')
     235                                ouvrir_zone($id_auteur,$ids_zone);
     236                                       
     237                                sql_insertq("spip_contacts_abonnements",array(
     238                                        'id_auteur'=> $id_auteur,
    234239                                        'objet'=>$objet,
    235240                                        'id_objet' => $id_objet,
    236                                         'statut_abonnement' => $statut_abonnement
    237                                 ),
    238                                 'data' => $objets
    239                         )
     241                                        'date'=>$date,
     242                                        'validite'=>$validite,
     243                                        'statut_abonnement'=>$statut_abonnement,
     244                                        'prix'=>$prix));
     245                        }else{
     246                                if (_DEBUG_ABONNEMENT) spip_log("abonnement_post_edition pour auteur=$id_auteur $objet $id_objet existe deja",'abonnement');
     247                                //modif des dates d'echeances
     248                                if($echeances[$key]!='' && ($echeances[$key]!=$deja['validite'])){
     249                                        if (_DEBUG_ABONNEMENT) spip_log("changer date ". $echeances[$key]."!=".$deja['validite'],'abonnement');
     250                                sql_updateq("spip_contacts_abonnements",array('validite'=>$echeances[$key]),
     251                                        'id_auteur='.$id_auteur.' and id_objet='.sql_quote($id_objet)." and objet='$objet'");
     252                                }
     253                        }
     254                }
     255        }
     256                        // Notifications, gestion des revisions, reindexation...
     257                pipeline('post_edition',
     258                array(
     259                        'args' => array(
     260                                'table' => 'spip_contacts_abonnements',
     261                                'id_auteur' => $id_auteur,
     262                                'objet'=>$objet,
     263                                'id_objet' => $id_objet,
     264                                'statut_abonnement' => $statut_abonnement
     265                        ),
     266                        'data' => $ids
     267                )
    240268                );
    241         }
    242 
    243         return $flux;
    244 }
    245 
    246 
     269               
     270}
    247271
    248272//utiliser le cron pour gerer les dates de validite des abonnements et envoyer les messages de relance
  • _plugins_/abonnement/zabonnement/trunk/plugin.xml

    r49834 r49891  
    33        <auteur>Anne-lise Martenot (elastick.net) - BoOz (booz@reo.net)
    44        </auteur>
    5         <version>1.2</version>
     5        <version>1.3</version>
    66        <version_base>1.1</version_base>
    77        <etat>
  • _plugins_/abonnement/zabonnement/trunk/prive/abonnement_fiche_modif.html

    r49813 r49891  
    55        <ul>
    66                <BOUCLE_actifs(CONTACTS_ABONNEMENTS){id_auteur}{objet=abonnement}>
    7                         <li>
    8                         <label><:abo:abonnement:></label>
     7                        <li class='prive_abo_border'>
     8                        <label><:abo:echeance:></label>
    99                                <BOUCLE_abo(ABONNEMENTS){id_abonnement=#ID_OBJET}>
    1010                                <input type="hidden" value="#ID_ABONNEMENT" name="abonnements[]">#TITRE</option>
  • _plugins_/abonnement/zabonnement/trunk/prive/style_prive_plugin_abonnement.html

    r49813 r49891  
    2222.abos{background:#FFFFFF;font-size: 1em;padding: 0 1em;}
    2323.abos .suppri{float:right; text-align:right; width:30px; position:relative; top:-30px}
     24
     25.prive_abo_border{border-bottom: 1px solid #DDDDDD;}
Note: See TracChangeset for help on using the changeset viewer.