Changeset 112770 in spip-zone


Ignore:
Timestamp:
Dec 13, 2018, 2:21:48 PM (3 months ago)
Author:
cedric@…
Message:

Revision des fonctions de calcul d'URL subscribe/unsubscribe/confirm pour gerer proprement une ou plusieurs id_mailsubscribinglists dans l'appel - ne casse pas les appels existants

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/mailsubscribers/trunk/mailsubscribers_fonctions.php

    r109466 r112770  
    103103 * Cle action pour les URLs subscribe/unsubscribe/confirm
    104104 * pour avoir une cle utilisable sur une liste precise,
    105  * l'id de liste est fourni en suffixe du jeton
     105 * un ou plusieurs ids de liste dans $id_mailsubscribinglists
    106106 * sous la forme "+".$id_mailsubscribinglist
    107  * @param $action
    108  * @param $email
    109  * @param $jeton
    110  * @return string
    111  */
    112 function mailsubscriber_cle_action($action, $email, $jeton) {
     107 * @param string $action
     108 * @param string $email
     109 * @param string $jeton
     110 * @param int|array $id_mailsubscribinglists
     111 * @return string
     112 */
     113function mailsubscriber_cle_action($action, $email, $jeton, $id_mailsubscribinglists = null) {
     114        if ($id_mailsubscribinglists) {
     115                if (!is_array($id_mailsubscribinglists)) {
     116                        $id_mailsubscribinglists = array($id_mailsubscribinglists);
     117                }
     118                $id_mailsubscribinglists = array_map('intval', $id_mailsubscribinglists);
     119                $id_mailsubscribinglists = array_filter($id_mailsubscribinglists);
     120                asort($id_mailsubscribinglists);
     121        }
     122
     123        if ($id_mailsubscribinglists) {
     124                $jeton .= '+' . implode('+', $id_mailsubscribinglists);
     125        }
    113126        $arg = "$action-$email-$jeton";
    114127        include_spip("inc/securiser_action");
    115128        $hash = calculer_cle_action($arg);
    116129
     130        if ($id_mailsubscribinglists) {
     131                $hash = implode('-', $id_mailsubscribinglists) . '-' . $hash;
     132        }
     133
    117134        return $hash;
    118135}
     
    120137/**
    121138 * URL unsubscribe
    122  * pour unsubscribe sur une liste precise, l'id de liste est fourni en suffixe du jeton
    123  * sous la forme "+".$id_mailsubscribinglist
     139 * pour subscribe sur une ou plusieurs listes precises, fournir le ou les ID dans $id_mailsubscribinglist
    124140 * @param string $email
    125141 * @param string $jeton
     142 * @param int|array $id_mailsubscribinglists
     143 *   une ou plusieurs listes a confirmer
    126144 * @param string $sep
    127145 * @return string
    128146 */
    129 function mailsubscriber_url_subscribe($email, $jeton, $sep = "&") {
     147function mailsubscriber_url_subscribe($email, $jeton, $id_mailsubscribinglists=null, $sep = "&") {
     148        // legacy ancien format d'appel : $sep etait le 3eme argument
     149        if (is_string($id_mailsubscribinglists) and $id_mailsubscribinglists and !intval($id_mailsubscribinglists)) {
     150                $sep = $id_mailsubscribinglists;
     151                $id_mailsubscribinglists = null;
     152        }
     153
    130154        $url = generer_url_action("subscribe_mailsubscriber", "email=" . urlencode($email), false, true);
    131         $url = parametre_url($url, "arg", mailsubscriber_cle_action("subscribe", $email, $jeton), $sep);
     155        $url = parametre_url($url, "arg", mailsubscriber_cle_action("subscribe", $email, $jeton, $id_mailsubscribinglists), $sep);
    132156
    133157        return $url;
     
    136160/**
    137161 * URL subscribe
    138  * pour subscribe sur une liste precise, l'id de liste est fourni en suffixe du jeton
    139  * sous la forme "+".$id_mailsubscribinglist
     162 * pour unsubscribe sur une ou plusieurs listes precises, fournir le ou les ID dans $id_mailsubscribinglist
    140163 * @param string $email
    141164 * @param string $jeton
     165 * @param int|array $id_mailsubscribinglists
     166 *   une ou plusieurs listes a confirmer
    142167 * @param string $sep
    143168 * @return string
    144169 */
    145 function mailsubscriber_url_unsubscribe($email, $jeton, $sep = "&") {
     170function mailsubscriber_url_unsubscribe($email, $jeton, $id_mailsubscribinglists=null, $sep = "&") {
     171        // legacy ancien format d'appel : $sep etait le 3eme argument
     172        if (is_string($id_mailsubscribinglists) and $id_mailsubscribinglists and !intval($id_mailsubscribinglists)) {
     173                $sep = $id_mailsubscribinglists;
     174                $id_mailsubscribinglists = null;
     175        }
     176
    146177        $url = generer_url_action("unsubscribe_mailsubscriber", "email=" . urlencode($email), false, true);
    147         $url = parametre_url($url, "arg", mailsubscriber_cle_action("unsubscribe", $email, $jeton), $sep);
     178        $url = parametre_url($url, "arg", mailsubscriber_cle_action("unsubscribe", $email, $jeton, $id_mailsubscribinglists), $sep);
    148179
    149180        return $url;
     
    152183/**
    153184 * URL confirm
    154  * pour confirm sur une liste precise, l'id de liste est fourni en suffixe du jeton
    155  * sous la forme "+".$id_mailsubscribinglist
     185 * pour confirm sur une ou plusieurs listes precises, fournir le ou les ID dans $id_mailsubscribinglist
    156186 * @param string $email
    157187 * @param string $jeton
     188 * @param int|array $id_mailsubscribinglists
     189 *   une ou plusieurs listes a confirmer
    158190 * @param string $sep
    159191 * @return string
    160192 */
    161 function mailsubscriber_url_confirm($email, $jeton, $sep = "&") {
     193function mailsubscriber_url_confirm($email, $jeton, $id_mailsubscribinglists=null, $sep = "&") {
     194        // legacy ancien format d'appel : $sep etait le 3eme argument
     195        if (is_string($id_mailsubscribinglists) and $id_mailsubscribinglists and !intval($id_mailsubscribinglists)) {
     196                $sep = $id_mailsubscribinglists;
     197                $id_mailsubscribinglists = null;
     198        }
     199
    162200        $url = generer_url_action("confirm_mailsubscriber", "email=" . urlencode($email), false, true);
    163         $url = parametre_url($url, "arg", mailsubscriber_cle_action("confirm", $email, $jeton), $sep);
     201        $url = parametre_url($url, "arg", mailsubscriber_cle_action("confirm", $email, $jeton, $id_mailsubscribinglists), $sep);
    164202
    165203        return $url;
Note: See TracChangeset for help on using the changeset viewer.