PageRenderTime 51ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/_plugins_/abonnement/branches/v0/abonnement_pipelines.php

https://bitbucket.org/pombredanne/spip-zone-treemap
PHP | 197 lines | 121 code | 36 blank | 40 comment | 20 complexity | a64c9125e3080ce73979e6f3b147e728 MD5 | raw file
  1. <?php
  2. if (!defined("_ECRIRE_INC_VERSION")) return;
  3. function abonnement_affiche_milieu($flux){
  4. if($flux['args']['exec'] == 'auteur_infos') {
  5. $legender_auteur_supp = recuperer_fond('prive/abonnement_fiche',array('id_auteur'=>$flux['args']['id_auteur']));
  6. $flux['data'] .= $legender_auteur_supp;
  7. }
  8. return $flux;
  9. }
  10. /**
  11. *
  12. * Insertion dans le pipeline editer_contenu_objet
  13. * Ajoute les champs abonnement sur le formulaire CVT editer_auteur
  14. *
  15. * @return array Le $flux complété
  16. * @param array $flux
  17. */
  18. function abonnement_editer_contenu_objet($flux){
  19. if ($flux['args']['type']=='auteur') {
  20. include_spip('public/assembler');
  21. /**
  22. *
  23. * Insertion des champs dans le formulaire aprs le textarea PGP
  24. *
  25. */
  26. $abonnement = recuperer_fond('prive/abonnement_fiche_modif',array('id_auteur'=>$flux['args']['id']));
  27. $flux['data'] = preg_replace('%(<li class="editer_pgp(.*?)</li>)%is', '$1'."\n".$abonnement, $flux['data']);
  28. }
  29. return $flux;
  30. }
  31. /**
  32. *
  33. * Insertion dans le pipeline post_edition
  34. * ajouter les champs abonnement soumis lors de la soumission du formulaire CVT editer_auteur
  35. *
  36. * @return
  37. * @param object $flux
  38. */
  39. function abonnement_post_edition($flux){
  40. // va savoir pourquoi ce truc est appelé trois fois quand on valide le form...
  41. if ($flux['args']['table']=='spip_auteurs') {
  42. spip_log('ABONNEMENT : abonnement_post_edition','abonnement');
  43. $id_auteur = $flux['args']['id_objet'];
  44. $abonnements = _request('abonnements') ;
  45. $echeances = _request('validites') ;
  46. if ($abonnements && is_array($abonnements)) {
  47. foreach($abonnements as $key => $id_abonnement) {
  48. if($echeances[$key])
  49. if (($id = sql_getfetsel('id_auteur','spip_auteurs_elargis_abonnements','id_auteur='.$id_auteur.' and id_abonnement='.sql_quote($id_abonnement).' and validite > NOW()'))){
  50. sql_updateq("spip_auteurs_elargis_abonnements",array('validite'=>$echeances[$key]),'id_auteur='.$id_auteur.' and id_abonnement='.sql_quote($id_abonnement).' and validite > NOW()');
  51. }
  52. if($id_abonnement!='non' and !$echeances[$key]){
  53. // abonnement non trouve ?
  54. $abonnement = sql_fetsel('*', 'spip_abonnements', 'id_abonnement = ' . $id_abonnement);
  55. if (!$abonnement) {
  56. spip_log("abonnement $id_abonnement inexistant");
  57. die("abonnement $id_abonnement inexistant");
  58. }
  59. $date = date('Y-m-d H:i:s');
  60. // jour
  61. if ($abonnement['periode'] == 'jours') {
  62. $validite = date('Y-m-d H:i:s', mktime(date('H'),date('i'),date('s'),date('n'),date('j')+$abonnement['duree'],date('Y')));
  63. }
  64. // ou mois
  65. else {
  66. $validite = date('Y-m-d H:i:s', mktime(date('H'),date('i'),date('s'),date('n')+$abonnement['duree'],date('j'),date('Y')));
  67. }
  68. // attention au triple appel, on verifie
  69. if ((!$id = sql_getfetsel('id_auteur','spip_auteurs_elargis_abonnements','id_auteur='.$id_auteur.' and id_abonnement='.sql_quote($id_abonnement).' and validite > NOW()')))
  70. sql_insertq("spip_auteurs_elargis_abonnements",array('id_auteur'=> $id_auteur,'id_abonnement'=> $id_abonnement,'date'=>$date,'validite'=>$validite,'statut_paiement'=>'ok','montant'=>$abonnement['montant']));
  71. }
  72. }
  73. }
  74. // Notifications, gestion des revisions, reindexation...
  75. pipeline('post_edition',
  76. array(
  77. 'args' => array(
  78. 'table' => 'spip_auteurs_elargis',
  79. 'id_objet' => $id_auteur
  80. ),
  81. 'data' => $auteur
  82. )
  83. );
  84. }
  85. return $flux;
  86. }
  87. function abonnement_i2_cfg_form($flux) {
  88. $flux .= recuperer_fond('fonds/inscription2_abonnement');
  89. return $flux;
  90. }
  91. function abonnement_i2_form_debut($flux) {
  92. if (lire_config('abonnement/proposer_paiement')) {
  93. $contexte = array("abonnement" => $flux['args']['abonnement'],"hash" => $flux['args']['hash']);
  94. $flux['data'] .= recuperer_fond('formulaires/liste_abonnements',$contexte);
  95. }
  96. return $flux;
  97. }
  98. function abonnement_i2_charger_formulaire($flux) {
  99. if (lire_config('abonnement/proposer_paiement')) {
  100. // valeur par defaut
  101. $flux['data']['abonnement'] = '1' ;
  102. include_spip('inc/acces');
  103. $hash = creer_uniqid();
  104. $flux['data']['hash'] = $hash ;
  105. $flux['data']['type_commande'] = "abonnement" ;
  106. }
  107. return $flux;
  108. }
  109. function abonnement_i2_verifier_formulaire($flux) {
  110. //if (lire_config('abonnement/proposer_paiement')) {
  111. // rien a faire, mais sait on jamais ! un jour peut etre !
  112. //}
  113. return $flux;
  114. }
  115. // inscrire l'abonnement dans la base, statut "a confirmer"
  116. // et afficher un formulaire de paiement (uniquement si la config le permet)
  117. function abonnement_i2_traiter_formulaire($flux) {
  118. if (lire_config('abonnement/proposer_paiement')) {
  119. if($id_abonnement = intval(_request('abonnement'))){
  120. $id_auteur = $flux['args']['id_auteur'] ;
  121. $hash = _request('hash');
  122. $row = sql_fetsel(array('montant'), 'spip_abonnements', 'id_abonnement='.sql_quote($id_abonnement));
  123. $montant = $row['montant'];
  124. // Ne pas mettre deux fois le meme abo ici. (refresh par ex ou retour)
  125. // avec le meme hash
  126. sql_delete("spip_auteurs_elargis_abonnements","hash=".sql_quote($hash)." and statut_paiement='a_confirmer'");
  127. sql_insertq('spip_auteurs_elargis_abonnements', array(
  128. 'id_auteur' => $id_auteur,
  129. 'id_abonnement' => $id_abonnement,
  130. 'date' => date("Y-m-d H:i:s"),
  131. 'hash'=>$hash,
  132. 'montant'=>$montant,
  133. 'statut_paiement' => 'a_confirmer')
  134. );
  135. }
  136. $flux['data']['ne_pas_confirmer_par_mail'] = true ;
  137. $flux['data']['message_ok'] = " " ;
  138. }
  139. return $flux;
  140. }
  141. function abonnement_i2_confirmation($flux) {
  142. // afficher un formulaire de paiement pour l'utilisateur (uniquement si la config le permet)
  143. if (lire_config('abonnement/proposer_paiement')) {
  144. $env = $flux['args'];
  145. $row = sql_fetsel(array('id_auteur'), 'spip_auteurs', 'email='.sql_quote($env['email']));
  146. $env['id_auteur'] = $row['id_auteur'] ;
  147. $flux['data'] .= recuperer_fond('formulaires/abonnement_paiement',$env);
  148. // on pose une session permettant d'identifier l'abonne
  149. // si desfois il lui prenait l'idée de faire "retour" avec son navigateur
  150. // on prend la date pour permettre la manip que pendant quelques minutes
  151. include_spip("inc/inscription2_session");
  152. i2_poser_session($row['id_auteur']);
  153. }
  154. return $flux;
  155. }
  156. //utiliser le cron pour gerer les dates de validite des abonnements et envoyer les messages de relance
  157. function abonnement_taches_generales_cron($taches_generales){
  158. $taches_generales['abonnement'] = 60*60*24 ;
  159. return $taches_generales;
  160. }
  161. ?>