Changeset 71605 in spip-zone for _plugins_/abonnement


Ignore:
Timestamp:
Apr 5, 2013, 11:45:17 AM (7 years ago)
Author:
rastapopoulos@…
Message:

Un système pour configurer des notifications de rappel d'échéance des abonnements.

Pour chaque offre d'abonnement, on a donc un formulaire permettant d'ajouter autant de rappels que l'on veut, en donnant des durées. Par exemple :

  • 1 mois
  • 7 jours

Dans ce cas, un courriel sera envoyé à l'abonné un mois avant la fin, et 7 jours avant la fin.

Ce courriel est dans un squelette HTML, que l'on peut donc personnaliser. Comme pour l'instant il n'y a pas de page publique officielle de prévu pour s'abonner, ou même de config du plugin pour ça, le message reste assez simple, on verra plus tard.

Un génie est lancé une fois par jour pour vérifier s'il doit programmer des notifications. Comme c'est par jour, on ne peut donc configurer les rappels qu'en jours et en mois (pas en heures quoi).

Location:
_plugins_/abonnement/trunk
Files:
7 added
8 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/abonnement/trunk/abonnements_administrations.php

    r68545 r71605  
    1616
    1717        $maj['create'] = array(array('maj_tables', array('spip_abonnements_offres', 'spip_abonnements_offres_liens', 'spip_abonnements')));
    18 
     18       
     19        // Ajout de la config des notifications
     20        $maj['2.1.0'] = array(
     21                array('maj_tables', array('spip_abonnements_offres_notifications'))
     22        );
     23       
    1924        include_spip('base/upgrade');
    2025        maj_plugin($nom_meta_base_version, $version_cible, $maj);
  • _plugins_/abonnement/trunk/abonnements_pipelines.php

    r68545 r71605  
    8383 */
    8484function abonnements_taches_generales_cron($taches){
    85         $taches['abonnements_verifier_desactivation'] = 60 * 60;
     85        $taches['abonnements_verifier_desactivation'] = 60 * 60; // toutes les heures
     86        $taches['abonnements_verifier_notifications'] = 24 * 3600; // une fois par jour
    8687        return $taches;
    8788}
    8889
     90/*
     91 * Ajouter la config des notifications
     92 */
     93function abonnements_affiche_gauche($flux){
     94        if ($flux['args']['exec'] == 'abonnements_offre'){
     95                $flux['data'] .= recuperer_fond(
     96                        'prive/squelettes/navigation/inc-abonnements_notifications',
     97                        array('id_abonnements_offre' => $flux['args']['id_objet'])
     98                );
     99        }
     100       
     101        return $flux;
     102}
     103 
    89104?>
  • _plugins_/abonnement/trunk/base/abonnements.php

    r68545 r71605  
    1515        $interfaces['table_des_tables']['abonnements_offres'] = 'abonnements_offres';
    1616        $interfaces['table_des_tables']['abonnements'] = 'abonnements';
     17        $interfaces['table_des_tables']['abonnements_offres_notifications'] = 'abonnements_offres_notifications';
    1718
    1819        return $interfaces;
     
    126127}
    127128
     129/*
     130 * Déclaration des tables principales non objet
     131 */
     132function abonnements_declarer_tables_principales($tables) {
     133        $tables['spip_abonnements_offres_notifications'] = array(
     134                'field' => array(
     135                        'id_abonnements_offres_notification' => 'bigint(21) not null',
     136                        'id_abonnements_offre'  => 'bigint(21) DEFAULT 0 NOT NULL',
     137                        'duree'                                 => 'int(11) NOT NULL DEFAULT 0',
     138                        'periode'                               => 'varchar(25) NOT NULL DEFAULT ""',
     139                ),
     140                'key' => array(
     141                        'PRIMARY KEY'                   => 'id_abonnements_offres_notification',
     142                        'KEY id_abonnements_offre' => 'id_abonnements_offre',
     143                ),
     144        );
     145       
     146        return $tables;
     147}
    128148
    129149/**
     
    143163                )
    144164        );
    145 
     165       
    146166        return $tables;
    147167}
  • _plugins_/abonnement/trunk/genie/abonnements_verifier_desactivation.php

    r68545 r71605  
    1414        if ($a_changer = sql_allfetsel(
    1515                'id_abonnement, date_fin',
    16                 'spip_abonnements as a left join spip_jobs_liens as l on l.objet="abonnement" and l.id_objet=a.id_abonnement',
     16                'spip_abonnements as a left join spip_jobs_liens as l on l.objet="abonnement" and l.id_objet=a.id_abonnement left join spip_jobs as j on j.fonction="abonnements_desactiver" and j.id_job=l.id_job',
    1717                array(
    1818                        'a.statut = "actif"',
  • _plugins_/abonnement/trunk/inc/abonnements.php

    r68545 r71605  
    6464}
    6565
     66/*
     67 * Envoyer un courriel à l'abonné pour lui rappeler combien de temps il lui reste
     68 */
     69function abonnements_notifier_echeance($id_abonnement, $nom, $email, $duree, $periode){
     70        $envoyer_mail = charger_fonction('envoyer_mail', 'inc/');
     71       
     72        $envoyer_mail(
     73                $email,
     74                _T('abonnement:notification_echeance_sujet_'.$periode, array('duree'=>$duree)),
     75                recuperer_fond(
     76                        'notifications/abonnement_echeance',
     77                        array(
     78                                'id_abonnement' => $id_abonnement,
     79                                'nom' => $nom,
     80                                'email' => $email,
     81                                'duree' => $duree,
     82                                'periode' => $periode
     83                        )
     84                )
     85        );
     86}
     87
    6688?>
  • _plugins_/abonnement/trunk/lang/abonnement_fr.php

    r68545 r71605  
    3030        'job_desactivation' => 'Désactivation de l’abonnement @id@',
    3131       
     32        // N
     33        'notification_echeance_sujet_jours' => 'Votre abonnement se termine dans @duree@ jour(s) !',
     34        'notification_echeance_sujet_mois' => 'Votre abonnement se termine dans @duree@ mois !',
     35        'notification_echeance_corps' => '<p>Bonjour @nom@,</p>
     36                <p>Vous recevez ce courriel car vous êtes abonné au site @nom_site_spip@ avec l’offre "@offre@".</p>
     37                <p>Votre abonnement arrive à échéance dans : <strong>@echeance@</strong>.<br/>
     38                Nous vous invitons donc à le renouveler avant son expiration.</p>
     39                <p>Merci de votre confiance, et n’hésitez pas à nous contacter pour toute information complémentaire.</p>',
     40       
    3241        // R
    3342        'retirer_lien_abonnement' => 'Retirer cet abonnement',
  • _plugins_/abonnement/trunk/lang/abonnementsoffre_fr.php

    r68545 r71605  
    2323        'champ_prix_label' => 'Prix',
    2424        'champ_titre_label' => 'Titre',
     25        'configurer_notifications' => 'Configurer les notifications',
     26        'configurer_notifications_quand' => 'Quand ?',
    2527       
    2628        // I
  • _plugins_/abonnement/trunk/paquet.xml

    r68554 r71605  
    22        prefix="abonnements"
    33        categorie="auteur"
    4         version="2.0.0"
    5         schema="2.0.0"
     4        version="2.1.0"
     5        schema="2.1.0"
    66        etat="test"
    77        compatibilite="[3.0.5;3.0.*]"
     
    2121        <necessite nom="saisies" compatibilite="[1.28.1;]" />
    2222        <necessite nom="verifier" compatibilite="[1.0.0;]" />
    23         <necessite nom="yaml" compatibilite="[1.5.0;]" />
     23        <necessite nom="yaml" compatibilite="[1.5.0;]" />
     24        <necessite nom="facteur" compatibilite="[3.0.1;]" />
    2425
    2526        <pipeline nom="autoriser" inclure="abonnements_autorisations.php" />
     
    2728        <pipeline nom="declarer_tables_objets_sql" inclure="base/abonnements.php" />
    2829        <pipeline nom="declarer_tables_interfaces" inclure="base/abonnements.php" />
     30        <pipeline nom="declarer_tables_principales" inclure="base/abonnements.php" />
    2931        <pipeline nom="declarer_tables_auxiliaires" inclure="base/abonnements.php" />
    3032        <pipeline nom="optimiser_base_disparus" inclure="abonnements_pipelines.php" />
    3133        <pipeline nom="post_edition" inclure="abonnements_pipelines.php" />
    3234        <pipeline nom="taches_generales_cron" inclure="abonnements_pipelines.php" />
     35        <pipeline nom="affiche_gauche" inclure="abonnements_pipelines.php" />
    3336
    3437        <menu nom="abonnements_offres" titre="abonnementsoffre:titre_abonnementsoffres" parent="menu_publication" icone="images/abonnement-16.png" action="abonnements_offres" />
Note: See TracChangeset for help on using the changeset viewer.