Changeset 49928 in spip-zone for _plugins_/abonnement


Ignore:
Timestamp:
Jul 24, 2011, 7:10:44 PM (9 years ago)
Author:
toutati@…
Message:

ajout de editer_contactabonnement pour alleger et rendre plus generique

zaboarticle_post_insertion disparait du coup

PS en pensant generique ... on peut voir que les objets pourraient etre aussi seulement choisi par le visiteur pour un temps donné

Sans avoir ni paiement ni acces restreint dans l'idee que "ca minteresse de le lire plus tard" une sorte de bookmark temporaire

Ou bien un prof qui donne des lectures/exercices/qcm à faire et attribue les articles aux auteurs via abonnement...

Location:
_plugins_/abonnement
Files:
1 added
5 edited

Legend:

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

    r49891 r49928  
    33        <auteur>Anne-lise Martenot (elastick.net) - BoOz (booz@reo.net)
    44        </auteur>
    5         <version>0.3</version>
     5        <version>0.3.1</version>
    66        <etat>
    77        test
     
    2222                <inclure>zaboarticle_pipelines.php</inclure>
    2323        </pipeline>
    24         <pipeline>
    25                 <nom>post_insertion</nom>
    26                 <inclure>zaboarticle_pipelines.php</inclure>
    27         </pipeline>
    2824        <pipeline>
    2925                <nom>autoriser</nom>
  • _plugins_/abonnement/zaboarticle/trunk/zaboarticle_pipelines.php

    r49891 r49928  
    33if (!defined("_ECRIRE_INC_VERSION")) return;
    44
    5 // abonnement payant gere par panier / commande etc
    6 // espace public
    7 // ˆ la validation du paiement de la commande inserer l'abonnement ˆ l'article
    8 function zaboarticle_post_insertion($flux){
    9        
    10         if (
    11                 $flux['args']['table'] == 'spip_commandes'
    12                 and ($id_commande = intval($flux['args']['id_objet'])) > 0
    13                 and $flux['data']['statut'] == 'paye'
    14         ){
    15         // On recupere le contenu des articles dans les details de la commande
    16                 $commande_abos = sql_allfetsel(
    17                 '*',
    18                 'spip_commandes_details',
    19                 'id_commande = '.$id_commande." AND objet='article'"
    20                 );
    21         // On recupere le id_auteur (unique) du flux data
    22         $id_auteur=$flux['args']['id_auteur'];
    23         if (_DEBUG_ABONNEMENT) spip_log('zaboarticle_post_insertion id_auteur= '.$id_auteur,'abonnement');
    24 
    25 
    26         // Pour chaque commande d'article
    27                 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')));
    33 
    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                                         );
    47                 }
    48 
    49         }
    50 
    51 return $flux;
    52 
    53 }
    54 
    555//espace prive
    56 //affiche les articles auxquels l'auteur est abonne (sur auteur_infos)
     6//affiche les articles et rubriques auxquels l'auteur est abonne (sur auteur_infos)
    577function zaboarticle_affiche_milieu($flux){
    588        if($flux['args']['exec'] == 'auteur_infos') {
     
    6414}
    6515
    66 //affiche liste des articles pour s'abonner dans le formulaire d'un auteur (un peu lourd!)
     16//affiche liste des articles et rubriques pour s'abonner dans le formulaire d'un auteur (un peu lourd...)
    6717function zaboarticle_editer_contenu_objet($flux){
    6818        if ($flux['args']['type']=='auteur') {
  • _plugins_/abonnement/zabonnement/trunk/abonnement_pipelines.php

    r49891 r49928  
    33if (!defined("_ECRIRE_INC_VERSION")) return;
    44
     5include_spip('action/editer_contactabonnement');
    56
    6 // abonnement payant gere par panier / commande etc
    77// espace public
    8 // ˆ la validation du paiement de la commande inserer l'abonnement ˆ l'abonnement
    9 //todo sinon inserer l'abonnement -refuse-
     8// si sql commande inserer l'abonnement aux objets avec statut_commande repris
    109function abonnement_post_insertion($flux){
    11        
     10               
    1211        if (
    1312                $flux['args']['table'] == 'spip_commandes'
    1413                and ($id_commande = intval($flux['args']['id_objet'])) > 0
    15                 and $flux['data']['statut'] == 'paye'
     14                and ($id_auteur = intval($flux['args']['id_auteur'])) > 0
    1615        ){
    17        
    18         $objet='abonnement';
    19        
    20         // On recupere le contenu des articles dans les details de la commande
    21                 $commande_abos = sql_allfetsel(
    22                         '*',
    23                         'spip_commandes_details',
    24                         'id_commande = '.$id_commande." AND objet='$objet'"
    25                 );
     16                       
     17                //statut de la commande
     18                $statut=$flux['data']['statut'];
    2619               
    27         // On recupere le id_auteur (unique) du flux data
    28         $id_auteur=$flux['args']['id_auteur'];
     20                if (_DEBUG_ABONNEMENT) spip_log("a_p_i id_commande=$id_commande $statut_commande pour auteur $id_auteur",'abonnement');
     21               
     22                // si dans les details de la commande il y a abonnement, article ou rubrique en objet
     23                $objets=array('article','rubrique','abonnement');
     24                foreach($objets as $objet){
     25                        if (_DEBUG_ABONNEMENT) spip_log("a_p_i objet= $objet",'abonnement');           
    2926
    30                 // Pour chaque commande d'abonnement
    31                 foreach($commande_abos as $abo){
    32                         $objet=$abo['objet'];
    33                         $id_objet = $abo['id_objet'];
    34                         $id_commandes_detail=$abo['id_commandes_detail'];
    35                         if (_DEBUG_ABONNEMENT) spip_log('abonnement_post_insertion > id_commande='.$id_commandes_detail.' id_abonnement='.$id_objet.'et auteur= '.$id_auteur,'abonnement');
     27                        $commande_abos = sql_allfetsel(
     28                                '*',
     29                                'spip_commandes_details',
     30                                'id_commande = '.$id_commande." AND objet='$objet'"
     31                        );
    3632                       
    37                         $abonnement = sql_fetsel('*', 'spip_abonnements', 'id_abonnement = '. $id_objet);
    38                        
    39                         $date = date('Y-m-d H:i:s');
    40                         $ids_zone=$verif['ids_zone'];
    41                         if($ids_zone!='')
    42                         ouvrir_zone($id_auteur,$ids_zone);
    43                                        
    44                                         // jour
    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')));
    47                                         }
    48                                         // ou mois
    49                                         else {
    50                                                 $validite = date('Y-m-d H:i:s', mktime(date('H'),date('i'),date('s'),date('n')+$verif['duree'],date('j'),date('Y')));
    51                                         }
    52                                        
    53                         // attention aux doublons, on verifie
    54                         if ((!$id = sql_getfetsel('id_auteur','spip_contacts_abonnements','objet="'.$objet.'" and id_auteur='.$id_auteur.' and id_objet='.sql_quote($id_objet).' and validite > NOW()')))
    55                                                 sql_insertq("spip_contacts_abonnements",
    56                                                         array(
    57                                                         'id_auteur'=> $id_auteur,
    58                                                         'objet'=>$objet,                                                       
    59                                                         'id_objet'=> $id_objet,
    60                                                         'date'=>$date,
    61                                                         'validite'=>$validite,
    62                                                         'id_commandes_detail'=>$id_commandes_detail,
    63                                                         'statut_abonnement'=>$flux['data']['statut'],
    64                                                         'prix'=>$abo['prix_unitaire_ht'])
    65                                                         );
    66                                         // sinon cet abonnement existe deja
    67                                         else {
    68                                         if (_DEBUG_ABONNEMENT) spip_log("abonnement $objet existe deja","abonnement");
    69                                         }
     33                                // Pour chaque commande contenant article ou rubrique en objet
     34                                foreach($commande_abos as $abo){
    7035
     36                                        $arg=array(
     37                                                'id_auteur'=>$id_auteur,
     38                                                'statut'=>$statut,
     39                                                'objet'=>$abo['objet'],
     40                                                'table'=>"spip_".$objet."s",
     41                                                'ids' => array($abo['id_objet']), //tjs envoyer un array
     42                                                'prix'=>$abo['prix_unitaire_ht'],
     43                                                'duree'=>3,
     44                                                'periode'=>'jour',
     45                                                'id_commandes_detail'=>$abo['id_commandes_detail'],
     46                                        );
     47
     48                                        editer_contactabonnement($arg);
     49                                }
    7150                }
    7251
     
    7554return $flux;
    7655       
    77 }
     56}             
    7857
    79 //fonctions a mettre ailleurs?
    80              
    81 function ouvrir_zone($id_auteur,$ids_zone)
    82 {
    83         $array_ids = explode(",", $ids_zone);
    84         foreach($array_ids as $id_zone)
    85         {
    86         if (_DEBUG_ABONNEMENT) spip_log("ouvrir_zone $id_zone pour $id_auteur",'abonnement');
    87                 sql_insertq("spip_zones_auteurs", array(
    88                         "id_zone"=>$id_zone,
    89                         "id_auteur"=>$id_auteur
    90                 ));
    91         }
    92 }
    9358
    9459//espace prive
     
    10368        //affiche les auteurs dont l'abonnement comprend cet article (sur articles)     
    10469        if($flux['args']['exec'] == 'articles') {
    105                 $affiche_abonnes = recuperer_fond('prive/abocomprend_article',
     70                $affiche_abonnes = recuperer_fond('prive/liste/abonnes_article',
    10671                        array('id_objet'=>$flux['args']['id_article'], 
    10772                        'objet'=>'article'
     
    10974                $flux['data'] .= $affiche_abonnes;
    11075        }
     76       
     77       
    11178        //affiche les auteurs dont l'abonnement comprend cette rubrique (sur rubriques)
    11279        if($flux['args']['exec'] == 'naviguer') {
    113                 $affiche_abonnes = recuperer_fond('prive/abocomprend_rubrique',
     80                $affiche_abonnes = recuperer_fond('prive/liste/abonnes_rubrique',
    11481                        array('id_objet'=>$flux['args']['id_rubrique'],
    11582                        'objet'=>'rubrique'
     
    11885        }
    11986        */
     87       
    12088        return $flux;
    12189}
     
    150118        // lors de l'edition d'un auteur
    151119        if ($flux['args']['table']=='spip_auteurs') {
    152         $continue=false;
    153        
    154                 $id_auteur = $flux['args']['id_objet'];
    155120               
    156                 $abonnements = _request('abonnements');
    157                 $rubriques = _request('rubriques');
    158                 $articles = _request('articles');
    159                 $echeances = _request('validites');
     121                //valable 3 jours, todo in config
     122                $statut ='offert';
     123                $duree = 3;
     124                $id_auteur=$flux['args']['id_objet'];
    160125               
    161                 $statut_abonnement='offert';
    162                 $duree = 3; //valable 3 jours, todo in config
     126                $objets=array('article','rubrique','abonnement');
    163127               
    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                 }
    177                
    178                 if ($abonnements && is_array($abonnements)) {
    179                 $objet='abonnement';
    180                 $ids=$abonnements;
    181                 $table="spip_abonnements";
    182                 creer_abonnement_objet($id_auteur,$statut_abonnement,$objet,$table,$ids,$duree);
     128                foreach($objets as $objet){
     129                        $ids=_request($objet.'s');
     130                        if ($ids && is_array($ids)) {                           
     131                                $args=array(
     132                                'id_auteur'=> $id_auteur,
     133                                'objet'=>$objet,
     134                                'table'=>"spip_".$objet."s",
     135                                'ids' => $ids,
     136                                'duree'=>$duree,
     137                                'statut'=>$statut
     138                                );
     139                                if (_DEBUG_ABONNEMENT) spip_log("APE args ".$args['table'] ." ids0=".$args['ids'][0],'abonnement');
     140                                editer_contactabonnement($args);
     141                        }       
    183142                }
    184143
     
    188147}
    189148
    190 function 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                 {
    196                                
    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                         }
    225                                
    226                         if (_DEBUG_ABONNEMENT) spip_log("zaboarticle_post_edition $objet $id_objet date $validite",'abonnement');
    227149
    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,
    239                                         'objet'=>$objet,
    240                                         'id_objet' => $id_objet,
    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                 )
    268                 );
    269                
    270 }
    271150
    272151//utiliser le cron pour gerer les dates de validite des abonnements et envoyer les messages de relance
  • _plugins_/abonnement/zabonnement/trunk/action/valider_paiement_fictif.php

    r49886 r49928  
    6464                                        $objet = $detail['objet'];
    6565                                        $id_objet=$detail['id_objet']; 
    66                                         $statut_nouveau='paye';
     66                                        $statut_paiement='paye';
    6767                                        }               
    6868                               
    69                                 if (_DEBUG_ABONNEMENT) spip_log('action_valider_paiement_fictif pour'.$detail['id_objet'].' '.$detail['objet'].' paiement='.$statut_paiement,'abonnement');
     69                                if (_DEBUG_ABONNEMENT) spip_log("action_valider_paiement_fictif pour $objet $id_objet paiement=".$statut_paiement,'abonnement');
    7070
    7171                        }
  • _plugins_/abonnement/zabonnement/trunk/plugin.xml

    r49891 r49928  
    33        <auteur>Anne-lise Martenot (elastick.net) - BoOz (booz@reo.net)
    44        </auteur>
    5         <version>1.3</version>
     5        <version>1.3.1</version>
    66        <version_base>1.1</version_base>
    77        <etat>
Note: See TracChangeset for help on using the changeset viewer.