feat: faire évoluer le format du parrain dans les transactions pour pouvoir afficher un lien vers les réponses tel que permis le plugin bank v6.1+

pull/7/head v2.1.0
Cerdic 2 months ago
parent 6d74ba4274
commit 5bc17674a8

@ -24,12 +24,36 @@ if (!defined('_ECRIRE_INC_VERSION')){
* @return void
**/
function formidablepaiement_upgrade($nom_meta_base_version, $version_cible){
$maj = array();
$maj = [];
$maj['1.0.1'] = [
['formidablepaiement_upgrade_parrains']
];
include_spip('base/upgrade');
maj_plugin($nom_meta_base_version, $version_cible, $maj);
}
/**
* Transformer les anciens parrains formXX:YYYYY en formidable:XX
* @return void
*/
function formidablepaiement_upgrade_parrains() {
include_spip('formidablepaiement_fonctions');
$res = sql_select('id_transaction, parrain, tracking_id', 'spip_transactions', "parrain LIKE 'form%:%'", '', 'id_transaction');
while ($row = sql_fetch($res)) {
if (preg_match(',^form(\d+):,', $row['parrain'], $m)) {
$id_formulaire = $m[1];
$parrain = formidablepaiement_parrain($id_formulaire);
sql_updateq('spip_transactions', ['parrain' => $parrain], 'id_transaction='.intval($row['id_transaction']));
}
if (time() > _TIME_OUT) {
return;
}
}
}
/**
* Fonction de désinstallation du plugin Formulaires de paiement.

@ -0,0 +1,61 @@
<?php
/**
* Utilisations de pipelines par Formulaires de paiement
*
* @plugin Formulaires de paiement
* @copyright 2014
* @author Cédric Morin
* @licence GNU/GPL
* @package SPIP\Formidablepaiement\Pipelines
*/
if (!defined('_ECRIRE_INC_VERSION')){
return;
}
/**
* Calculer le parrain pour une transaction liée à un formulaire formidable
* @param int $id_formulaire
* @return string
*/
function formidablepaiement_parrain($id_formulaire) {
return "formidable:$id_formulaire";
}
/**
* Verifier si le parrain d'une transaction est celui d'un formulaire formidable
* @param string $parrain
* @return false|mixed|null
*/
function formidablepaiement_is_parrain_formidable($parrain) {
if (strpos($parrain, 'formidable:') === 0
and $parrain = explode(':', $parrain)
and count($parrain) === 2
and is_numeric(end($parrain))) {
return $id_formulaire = array_pop($parrain);
}
return false;
}
/**
* Afficher le lien vers une réponse formidable sur les transactions liées à des formulaires formidables
* @param int $id_transaction
* @param int $id_formulaires_reponse
* @return string
*/
function bank_affiche_parrain_formidable($id_transaction, $id_formulaires_reponse) {
$url = generer_url_entite($id_formulaires_reponse, 'formulaires_reponse');
$t = objet_icone('formulaires_reponse', 12) . " #$id_formulaires_reponse";
$title = _T(objet_info('formulaires_reponse', 'texte_objet')) . " #$id_formulaires_reponse";
$title = attribut_html($title);
$s = "<a href=\"$url\" title=\"$title\">$t</a>";
$id_formulaire = sql_getfetsel('id_formulaire', 'spip_formulaires_reponses', 'id_formulaires_reponse='.intval($id_formulaires_reponse));
if ($id_formulaire and $titre = generer_info_entite($id_formulaire, 'formulaire', 'titre')) {
$title = attribut_html(textebrut($titre));
$url = generer_url_entite($id_formulaire, 'formulaire');
$t = objet_icone('formulaire', 12) . " #$id_formulaire";
$s = "<a href=\"$url\" title=\"$title\">$t</a> $s";
}
return $s;
}

@ -13,6 +13,8 @@ if (!defined('_ECRIRE_INC_VERSION')){
return;
}
include_spip('formidablepaiement_fonctions');
/**
* Rediriger vers le checkout apres un paiement qui demande confirmation
* (type paypal express)
@ -34,8 +36,7 @@ function formidablepaiement_formulaire_charger($flux){
// verifier que la transaction en session est bien associee a ce formulaire
$id_formulaire = formidable_id_formulaire($id);
$parrain = "form{$id_formulaire}:";
if (strncmp($trans['parrain'], $parrain, strlen($parrain))==0){
if ($trans['parrain'] === formidablepaiement_parrain($id_formulaire)){
// on reaffiche le modele de paiement qui demande confirmation
$form = recuperer_fond("modeles/formidablepaiement-transaction", array('id_transaction' => $id_transaction, 'transaction_hash' => $trans['transaction_hash']));
$flux['data'] =
@ -94,7 +95,7 @@ function formidablepaiement_formulaire_fond($flux){
function formidablepaiement_bank_dsp2_renseigner_facturation($flux){
// si c'est une transaction associee a un form
if ($id_transaction = $flux['args']['id_transaction']
and preg_match(",form\d+:,", $flux['args']['parrain'])
and $id_formulaire = formidablepaiement_is_parrain_formidable($flux['args']['parrain'])
and $id_formulaires_reponse = $flux['args']['tracking_id']){
include_spip('formidable_fonctions');
@ -136,7 +137,7 @@ function formidablepaiement_bank_dsp2_renseigner_facturation($flux){
function formidablepaiement_bank_traiter_reglement($flux){
// si c'est une transaction associee a un form
if ($id_transaction = $flux['args']['id_transaction']
and preg_match(",form\d+:,", $flux['args']['avant']['parrain'])
and $id_formulaire = formidablepaiement_is_parrain_formidable($flux['args']['avant']['parrain'])
and $id_formulaires_reponse = $flux['args']['avant']['tracking_id']){
include_spip('formidable_fonctions');
@ -164,7 +165,8 @@ function formidablepaiement_affiche_enfants($flux){
$reponse = sql_fetsel('*', 'spip_formulaires_reponses', 'id_formulaires_reponse=' . intval($id_formulaires_reponse));
$where = "parrain LIKE " . sql_quote('form' . $reponse['id_formulaire'] . ':%') . " AND tracking_id=" . intval($id_formulaires_reponse);
$parrain = formidablepaiement_parrain($reponse['id_formulaire']);
$where = "parrain=" . sql_quote($parrain) . " AND tracking_id=" . intval($id_formulaires_reponse);
$flux['data'] .= recuperer_fond("prive/objets/liste/transactions", array('where' => $where));
}
return $flux;
@ -174,7 +176,8 @@ function formidablepaiement_affiche_milieu($flux){
if ($flux['args']['exec']=='formulaires_reponses'
and $id_formulaire = $flux['args']['id_formulaire']){
$where = "parrain LIKE " . sql_quote('form' . $id_formulaire . ':%');
$parrain = formidablepaiement_parrain($id_formulaire);
$where = "parrain=" . sql_quote($parrain);
$flux['data'] .= recuperer_fond("prive/objets/liste/transactions", array('where' => $where));
}
return $flux;

@ -1,12 +1,12 @@
<paquet
prefix="formidablepaiement"
categorie="communication"
version="2.0.6"
version="2.1.0"
etat="stable"
compatibilite="[3.2.0;4.2.*]"
logo="formidablepaiement-64.png"
documentation="https://contrib.spip.net/4614"
schema="1.0.0"
schema="1.0.1"
>
<nom>Formulaires de paiement</nom>

@ -52,12 +52,14 @@ function traiter_paiement_dist($args, $retours){
include_spip('inc/filtres');
$auteur = email_valide($auteur);
}
// preparer la transaction
include_spip('formidablepaiement_fonctions');
$options = array(
'montant_ht' => $montant_ht,
'id_auteur' => (isset($GLOBALS['visiteur_session']['id_auteur']) ? $GLOBALS['visiteur_session']['id_auteur'] : 0),
'auteur' => $auteur,
'parrain' => 'form' . $formulaire['id_formulaire'] . ':' . $formulaire['identifiant'],
'parrain' => formidablepaiement_parrain($formulaire['id_formulaire']),
'tracking_id' => $id_formulaires_reponse,
);

Loading…
Cancel
Save