Annonce

#1 Re : Discussions » assign_block_tags et assign_block_vars » 2011-03-30 17:21:03

Merci Bobe,

Entre temps, j'ai fait ces modifications. Peut-être peuvent-elles servir à d'autres ?

    /**
     * @param string $name  Nom du block et des éventuels sous blocks
     * @param array  $tags  Tableau des tags à remplacer dans le message
     *
     * @access public
     * @return void
     */
    function assign_block_tags($name, $tags = null)
    {
        if( preg_match('/^[[:alnum:]_-]+$/i', $name) )
        {
            //if( !isset($this->block_tags[$name]) ) $this->block_tags[$name] = array();
            $this->block_tags[$name][] = $tags;
        }


    /**
     * @param string $texte
     *
     * @access private
     * @return string
     */
    function replace_block_tags($texte)
    {
        $total_blocks = preg_match_all(
            "/<!-- start_block ([[:alnum:]_-]+) -->(.*?)<!-- end_block \\1 -->([\r\n]+)/is",
            $texte,
            $matches
        );
       
        for( $i = 0; $i < $total_blocks; $i++ )
        {
            $block_name = $matches[1][$i];
           
            $tmp = '';
            if( isset($this->block_tags[$block_name]) && $nb_items = count($this->block_tags[$block_name]) )
            {
                for( $j=0; $j<$nb_items; $j++ )
                {
                    $keys = $values = array();
                    foreach( $this->block_tags[$block_name][$j] as $key => $val )
                    {
                        $keys[]   = '/(?:(%)|(\{))' . $block_name . '\.' . $key . '(?(1)%|\})/i';
                        $values[] = $val;
                    }
                   
                    $tmp .= preg_replace($keys, $values, trim($matches[2][$i])) . $matches[3][$i];
                }
            }
            $texte = str_replace($matches[0][$i], $tmp, $texte);
           
        }

        return $texte;
    }

Donc, peu de choses modifiées et un fonctionnement un peu amélioré permettant de construire un tableau simple.
C'est quand même pratique pour dresser un listing vers le webmaster.
La nouvelle function assign_block_tags est peut-être un peu simpliste ?
Je ne pense pas qu'il y ait incompatibilité avec l'existant.

C'est une sacrée usine à gaz ce wanewsletter.
Cordialement,
Chami

#2 Discussions » assign_block_tags et assign_block_vars » 2011-03-26 01:07:57

Chami
Réponses : 2

Bonsoir,

Tout d'abord, un monument ce wanewsletter. Bravo et merci.
J'ai voulu utiliser assign_block_tags comme je le fais avec assign_block_vars pour créer un tableau dans un mail du genre :
----------------------------------------------------------------
<!-- start_block winners -->

Email : %winners.EMAIL%            Code : %winners.CODE%

<!-- end_block winners -->
-----------------------------------------------------------------
code :
                    do
                    {
                            $quiz_form->mailer->assign_block_tags('winners', array(
                                'EMAIL'        => $rowWarned['abo_email'],
                                'CODE'        => $rowWarned['register_key']
                            ));
                            $i++;
                    }
                    while( $rowWarned = $result->fetch() );
-------------------------------------------------------------------
Mais, il n'est créé qu'une ligne.
En regardant le code, ça paraît normal. Est-ce volontaire ? Est-ce que je fais une mauvaise interprétation de cette fonction ?
Y-a-t-il une méthode pour faire ce que je veux faire ?

Merci de votre aide,
Chami

Pied de page des forums

Propulsé par FluxBB