Научи ме

Програмиране => Уроци => PHP - Общи => Темата е започната от: wuser в 21 Октомври 2011, 10:56:18

Титла: Проста шаблонна система
Публикувано от: wuser в 21 Октомври 2011, 10:56:18
Тази тема обсъжда „Проста шаблонна система“ (http://nau4i.me/c/270).
Автор:  HanKrum (http://nau4i.me/forum/index.php?action=profile;u=106).
Титла: Re: Проста шаблонна система
Публикувано от: wuser в 21 Октомври 2011, 11:00:45
Така, както ти казах имам забележка. Тези <option> трябваше да бъдат в другия файл. Нали това е целта на шаблоните. Да се раздели кода от html, за да може всеки да си работи неговата част. Така направено, отново ги омесваш. Но това е по-скоро от недооглеждане. Идеята е представена страхотно.
Титла: Re: Проста шаблонна система
Публикувано от: mgrozdanov в 21 Октомври 2011, 11:05:36
Сега ако подкарате и видеото да върви, ще е прекрасно  :)
Титла: Re: Проста шаблонна система
Публикувано от: wuser в 21 Октомври 2011, 11:29:33
Темата се заключва временно до отстраняване на гаден проблем със звука…

Проблема отстранен, темата се отключва.
Титла: Re: Проста шаблонна система
Публикувано от: HanKrum в 21 Октомври 2011, 15:58:08
Така, както ти казах имам забележка. Тези <option> трябваше да бъдат в другия файл. Нали това е целта на шаблоните. Да се раздели кода от html, за да може всеки да си работи неговата част. Така направено, отново ги омесваш. Но това е по-скоро от недооглеждане. Идеята е представена страхотно.
Абе идеята ми беше променливата $opt да бъде нещо такова:
Код: PHP
  1. for ($p = 0;$p < 10;$p++) {
  2.     $opt .= '<option value="' . $p . '">' . $p . '. poreden red</option>';
  3. }
  4.  
... но ме домързя :)

Другия път, ще ползвам слушалки с микрофон. Направих го на лаптопа и ползвах вградения микрофон и колкото и да се стараех да натискам тихо клавишите, те пак кънтяха пък и шума май е доста голям. ;)
Титла: Re: Проста шаблонна система
Публикувано от: edembg в 21 Октомври 2011, 21:02:39
Добър пример. Ети и моят:
<?php
/*
  ****************************************************************************
  * template class                                                           *
  * Version 3                                                                *
  *                                                                          *
  * Copyright (C) 2004 - 2005 by Roumen Georgiev - edembg@edemarts.com       *
  *                                                                          *
  * Author:                                                                  *
  * Roumen Georgiev, Sofia, Bulgaria, edembg@edemarts.com                    *
  *                                                                          *
  ****************************************************************************
*/

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/*
Sintaxis

variables - <!--%VarName%--> or <!--%VarName[index]%-->

constants - [!--%ConstantName%--!]

if construct - {?if expression?} Action {?/if?}
{?if $c == 1?}PPPPP{?/if?}<br> {?if !$c?}NNNNN{?/if?}

loops {!loop indexName $VarName!} Action {!/loop!}
{!loop i $d!}
{?if {*index*}%2?} 1 {?/if?}{?if !{*index*}%2?} 0 {?/if?}<br>
<!--%d[i]%-->
{!/loop!}
*/
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
class template
  
{
  var 
$vars = array(), $template$content;
  var 
$indent 0$indent_str "";
  var 
$loop_stack$loop_point;

   
  function 
template($template)
    {
    
$this->template $template;
    }
    
  
  function 
set_indent($indent)
    {
    
$this->indent $indent;
    
$this->indent_str "";
    for (
$i 0$i $indent$i++)
      {
      
$this->indent_str .= "\t";
      }
    }
  
  function 
inc_indent()
    {
    
$this->indent_str .= "\t";
    }
    
  function 
dec_indent()
    {
    
$this->indent_str substr($this->indent_str1);
    }
  function 
tbl_row_beg($prop "")
    {
    
$code $this->indent_str."<tr";
    if (
$prop != ""$code .= ' '.$prop;
    
$code .= ">\n";
    return (
$code);
    }
    
  function 
tbl_row_end()
    {
    
$code $this->indent_str."</tr>\n";
    return (
$code);
    }

  function 
table($values$property$row_prop = array())
    {
    
$code "";
    
$j 0;
    
$i 0;
    foreach (
$values as $bval)
      {
      
$this->dec_indent();
      if (
sizeof($row_prop) == 0$code .= $this->tbl_row_beg();
      else {
        
$code .= $this->tbl_row_beg($row_prop[$j]);
        
$j++;
        if (
$j == sizeof($row_prop)) $j 0;
        }
      
$this->inc_indent();
      foreach (
$bval as $sval)  
        {
        
$code .= $this->indent_str.'<td';
        if (
$property[$i] != ''$code .= ' '.$property[$i];
        
$code .= '>'.$sval."</td>\n";
        
$i++;
        if (
$i == sizeof($property)) $i 0;
        }
      
$this->dec_indent();
      
$code .= $this->tbl_row_end();
      
$this->inc_indent();
      }
    return (
$code);
    }
    
  function 
option($content$selected)
    {
    
$out "";
    foreach (
$content as $key => $val)
      {
      
$out .= $this->indent_str.'<option value="'.$key.'"';
      if (
in_array($key$selected)) $out .= ' selected="selected"';
      
$out .= '>'.$val.'</option>'."\n";
      }
    return (
$out);
    }
    
  function 
select($name$size$params$content$selected)  
    {
    
$ret $this->indent_str.'<select name="'.$name.'" size="'.$size.'"';
    if (
$params != ""$ret .= " ".$params;
    
$ret .= ">\n";
    
$this->inc_indent();
    
$ret .= $this->option($content$selected);
    
$this->dec_indent();
    
$ret .= "</select>\n";
    return (
$ret);
    }
  
  function 
image($path$alt,$height$width$border 0$align ""$end "")
    {
    
$image $this->indent_str.'<img src="'.$path.'" alt="'.$alt.'" height="'.$height.'" width="'.$width.'" border="'.$border.'"';
    if (
$align != ""$image .= ' align="'.$align.'"';
    
$image .= ' />'.$end;
    return(
$image);
    }

   function 
link($URL$label$class ""$title ""$target ""$end "")
    {
    
$javascript_event= (strtolower($label)=="delete") ? true false;
    
$res $this->indent_str.'<a href="'.$URL.'"';
    if (
$title != ""$res .= ' title="'.$title.'"';
    if (
$target != ""$res .= ' target="'.$target.'"';
    if (
$class != ""$res .= ' class="'.$class.'"';
    
$res .= ($javascript_event) ? " onClick='if (!confirm(\"Are you sure?\")){ return false;}'" "";
    
$res .= '>'.$label.'</a>'.$end;
    return (
$res);
    }

function checkbox($name$value$checked false$end "")
{
$res '<input type="checkbox" name="'.$name.'" value="'.$value.'"';
if ($checked$res .= ' checked';
$res .= '>'.$end;
return ($res);
}

 function 
input($type$name$value ""$size ""$extra ""$end "")
        {
        
$res '<input type="'.$type.'" name="'.$name.'"';
        if (
$value != ""$res .= ' value="'.$value.'"';
        if (
$size != ""$res .= ' size="'.$size.'"';
        if (
$extra != ""$res .= ' '.$extra;
        
$res .= '>'.$end;
        return (
$res);
        }


  function 
var_set($name$value)
    {
    
$this->vars[$name] = $value;
    }

function mk_eval($str)
{
// $obuf = "\$ev = (";
$obuf "(";
$buf explode(" "$str);
foreach ($buf as $val)
{
if (false === strpos($val"$")) $obuf .= $val;
else {
$val str_replace("$"""$val);
if ($pos strpos($val"["))
{
$c substr($val0$pos);
$d substr($val$pos);
$ev " \$this->vars[".$c."]".$d;
} else $ev " \$this->vars[".$val."]";
$obuf .= $ev." ";
}
}
$obuf .= ") ? true : false;";
//print $obuf."<br>\n";
return ($obuf);
}
    
  function 
compile()
    {
    
$this->content "";
    
$stack = array();
    
$cur_bool $wr true;
    
    
$fp fopen($this->template'r');
    if (!
$fp) return("Error opening template");
    while(!
FEOF($fp))
      {
      
$this->content .= fread($fp4096);
      }
    
fclose($fp);
//++++++++++++++++++++++++++++++++++++++++++++++++++
$this->loop_stack = array();
$this->loop_point 0;
$buf1 preg_split("[({!loop)|(/loop!})]"$this->content);
$this->content "";

foreach ($buf1 as $val)
{
$pos strpos($val"!}");
$r_pos strpos($val"{!");

if ($this->loop_point == && !$pos && false === $r_pos$this->content .= $val;
else {
if (!$pos && false === $r_pos$this->l_add($val);
else {
if ($pos)$this->l_push($val);
if (false !== $r_pos

if (!$pos$this->l_add($val); 
$this->l_pop(); 
} else if (!$pos)$this->l_add($val);
}
}
}
//++++++++++++++++++++++++++++++++++++++++++++++++++
//print $this->content;
$buf1 preg_split("[({\?if)|(/if\?})]"$this->content);
//print_r($buf1);
$this->content "";
//$count = 0;
foreach ($buf1 as $val)
{
//$count++;
//print "<br>".$count."<br>\n";
//if ($count > 9) print $val."<br>\n";
//print "<br>$count<br>------------<br>\nlen = ".strlen($val)."<br>".($cur_bool?"yes":"no")."<br>\n";
//var_dump($stack);
$pos strpos($val"?}");
$r_pos strpos($val"{?");
//if ($r_pos == strlen($val) - 2) $r_pos = false; 
if ($cur_bool && false === $pos && false === $r_pos$this->content .= $val;
else {
//print "<br>\n".$val."<br>\n";
if ($cur_bool)
{
if ($pos)
{
$sw $this->mk_eval(trim(substr($val0$pos)));
//var_dump($sw);
//print "<br>\n";
//print "\$sw = ".$sw."<br>\n";
eval("\$sw = ".$sw);
//if ($sw) print "true<br>\n";
//else print "false<br>\n";
if ($sw)
{
if (false === $r_pos
{
//print "Push1 -  $val  - $pos - $r_pos - ".strlen($val).($cur_bool ? " v" : " h")."<br>\n";
array_push($stack$sw);
$cur_bool $sw;
$this->content .= substr($val$pos 2);
} else {
//print "Out after Push1<br>\n";
$this->content .= str_replace("{?"""substr($val$pos 2));
}
$wr false;
} else {
if (false === $r_pos

//print "Push2 -  $val  - $pos - $r_pos - ".strlen($val).($cur_bool ? " v" : " h")."<br>\n";
// array_push($stack, $sw); 
array_push($stack$cur_bool); 
$cur_bool $sw
}
$wr false;
}

if ($wr)
{
if (false !== $r_pos)
{
if (sizeof($stack) > 0
{
//print "Pop1 - <br>\n";
$cur_bool array_pop($stack);
}
else $cur_bool true;
$this->content .= substr($val0$r_pos);
} else {
$this->content .= $val;
}
} else $wr true;
} else {
//print "pos = ".$pos.", r_pos = ".$r_pos.", N r_pos".strpos($val, "?}")."<br>\n";
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//var_dump($stack); print "<br>\n";
if (false !== $pos)
{
if (false === $r_pos

//print "Push3 -  $val  - $pos - $r_pos - ".strlen($val).($cur_bool ? " v" : " h")."<br>\n"; 
array_push($stack$cur_bool); 
}
} else {
if (false !== $r_pos
{
if (sizeof($stack) > 0

//print "Pop2 - $val  - $pos - $r_pos - ".strlen($val).($cur_bool ? " v" : " h")."<br>\n"; 
$cur_bool array_pop($stack); 
}
else $cur_bool true;
}

}
/*
if (false !== $pos)
{
if (false === $r_pos) 

print "Push3 -  $val  - $pos - $r_pos - ".strlen($val).($cur_bool ? " v" : " h")."<br>\n"; 
array_push($stack, $cur_bool); 
}
}
if (false !== $r_pos) 
{
if (sizeof($stack) > 0) 

print "Pop2 - $val  - $pos - $r_pos - ".strlen($val).($cur_bool ? " v" : " h")."<br>\n"; 
$cur_bool = array_pop($stack); 
}
else $cur_bool = true;
}
*/
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
}
}
}
//++++++++++++++++++++++++++++++++++++++++++++++++++
//print $this->content;
    
$buf1 explode("<!--%"$this->content);
    
$this->content "";
    foreach (
$buf1 as $value
    
{
      if (!strpos($value"%-->")) $this->content .= $value;
    
  else {
        
$buf2 explode("%-->"$value);

if ($pos strpos($buf2[0], "["))
{
$c substr($buf2[0], 0$pos);
$d substr($buf2[0], $pos);
$ev "\$ev = \$this->vars['".$c."']".$d.";";
} else $ev "\$ev = \$this->vars['".$buf2[0]."'];";
//print $ev;

eval($ev);
$this->content .= $ev.$buf2[1];
    
  }
    
}
    

    
$buf1 explode("[!--%"$this->content);
    
$this->content "";
    foreach (
$buf1 as $value)
    
{
    
if (!strpos($value"%--!]")) $this->content .= $value;
    
else {
    
$buf2 explode("%--!]"$value);
    
$ev "\$ev = @constant(\"".$buf2[0]."\");";
    
eval($ev);
    
$this->content .= $ev.$buf2[1];
    
}
    
}
    return (
$this->content);
    }
    
function l_push($val)
{
$this->loop_stack[$this->loop_point] = str_replace("{!""",$val);
$this->loop_point++;
}

function l_pop()
{
$this->loop_point--;

$buf explode("!}"$this->loop_stack[$this->loop_point]);

$buf1 explode(" "trim($buf[0]));
$leter trim($buf1[0]);
/*
$ev = "\$count = @sizeof(\$this->vars['".str_replace("$", "", $buf1[1])."']);";
eval($ev);
$buf2 = "";
for ($i = 0; $i < $count; $i++)
{
$tmp = str_replace("[".$leter."]", "[".$i."]", $buf[1]);
// $buf2 .= str_replace("[".$leter."]", "[".$i."]", $buf[1]);
$buf2 .= str_replace("{*index*}", $i, $tmp);
}
*/
$ev "\$l_var = \$this->vars['".str_replace("$"""$buf1[1])."'];";
eval($ev);
$buf2 "";

if (is_array($l_var) && sizeof($l_var) != 0)
{
foreach ($l_var as $i => $a)
{
$tmp str_replace("[".$leter."]""[".$i."]"$buf[1]);
$buf2 .= str_replace("{*index*}"$i$tmp);
}
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if ($this->loop_point != 0
{
$this->l_add($buf2);
} else {
$this->content .= $buf2;
}
unset($this->loop_stack[$this->loop_point]);
}

function l_add($val)
{
$this->loop_stack[$this->loop_point 1] .= str_replace("{!""",$val);
}
//==============OLD FUNCTIONS============================================================
function opt_tag($name$size$extra ""$content$selected$disabled 0)
    {
    
$res '<select name="'.$name.'" size="'.($size == "" || $size == 01:$size).'"';
    if (
$extra != ""$res .= $extra;
    if (
$disabled != $res .= ' disabled';
    
$res .= ">\n";
    
$res .= $this->option($content$selected);
    
$res .= "</select>\n";
    return 
$res;
    }


  }
?>
Също много проста машинка за шаблони. Надявам се да свърши работа на някого, както и на мен.
Титла: Re: Проста шаблонна система
Публикувано от: wuser в 21 Октомври 2011, 22:30:46
Много добър клас.
Титла: Re: Проста шаблонна система
Публикувано от: HanKrum в 21 Октомври 2011, 22:34:56
Сложи го в "Полезни функции и класове"
Титла: Re: Проста шаблонна система
Публикувано от: wuser в 22 Октомври 2011, 15:16:45
Налична е нова версия на видеото с оправен звук. Не очаквайте чудеса. Хана не звучи като Джаксън. Просто премахнах дразнещия фонов шум, но не пукания и такива. Все пак вчера сефте пипнах audacity за някаква реална работа, а не само да го разгледам. Ако има проблеми свиркайте.


//на лисока под ГНУ/Линукс се чува и вижда добре, но ако на други системи има проблем, кажете.
Титла: Re: Проста шаблонна система
Публикувано от: smarfy02 в 18 Март 2012, 23:30:17
хубава урок ,но имам един въпрос относно "content"  има ли ограничение в размера на текста в единичните кавички (ако текста които искам да вложим е голям ...)?
Титла: Re: Проста шаблонна система
Публикувано от: wuser в 19 Март 2012, 00:55:01
Не би трябвало. Няма логика да е пречка.
Титла: Re: Проста шаблонна система
Публикувано от: HanKrum в 20 Март 2012, 14:29:00
хубава урок ,но имам един въпрос относно "content"  има ли ограничение в размера на текста в единичните кавички (ако текста които искам да вложим е голям ...)?
... няма никакво ограничение, ако се заинтересуваш повече ще ти дам идеи как да си направиш и по-сложни неща с този шаблон :)
Титла: Viagra online"Buy viagra online
Публикувано от: sharli в 02 Юли 2021, 12:05:04
es cialis la mejor pastilla viagra (https://www.grupopenascal.com/2020/11/16/es-cialis-la-mejor-pastilla-viagra)
levitra generico precio espana en farmacia (https://www.grupopenascal.com/2020/11/16/levitra-generico-precio-espana-en-farmacia)
partir pastilla de cialis (https://www.grupopenascal.com/2020/11/16/partir-pastilla-de-cialis)
donde compro viagra serios (https://www.grupopenascal.com/2020/11/16/donde-compro-viagra-serios)
precio viagra 25 mg amazon (https://www.grupopenascal.com/2020/11/16/precio-viagra-25-mg-amazon)
super kamagra comprar (https://www.grupopenascal.com/2020/11/16/super-kamagra-comprar)
cenforce 120 opiniones (https://www.grupopenascal.com/2020/11/16/cenforce-120-opiniones)
fildena opiniones (https://www.grupopenascal.com/2020/11/16/fildena-opiniones)
viagra cialis y levitra generico (https://www.grupopenascal.com/2020/11/16/viagra-cialis-y-levitra-generico)
comprar uro tadalafilo mylan (https://www.grupopenascal.com/2020/11/16/comprar-uro-tadalafilo-mylan)
levitra dapoxitina generico contrareembolso (https://www.grupopenascal.com/2020/11/16/levitra-dapoxitina-generico-contrareembolso)
comprar viagra inmitacion (https://www.grupopenascal.com/2020/11/16/comprar-viagra-inmitacion)
kamagra comprar valencia (https://www.grupopenascal.com/2020/11/16/kamagra-comprar-valencia)
comprar levitra en toledo (https://www.grupopenascal.com/2020/11/16/comprar-levitra-en-toledo)
comprar cialis 20 mg contrareembolso 24 horas (https://www.grupopenascal.com/2020/11/16/comprar-cialis-20-mg-contrareembolso-24-horas)
donde comprar viagra de forma fiable (https://www.grupopenascal.com/2020/11/16/donde-comprar-viagra-de-forma-fiable)
comprar levitra 60 g (https://www.grupopenascal.com/2020/11/16/comprar-levitra-60-g)
levitra precio en farmacias guadalajara (https://www.grupopenascal.com/2020/11/16/levitra-precio-en-farmacias-guadalajara)
precio levitra en farmacia (https://www.grupopenascal.com/2020/11/16/precio-levitra-en-farmacia)
donde comprar viagra en alicante en tienda (https://www.grupopenascal.com/2020/11/16/donde-comprar-viagra-en-alicante-en-tienda)
precios de viagra cialis y levitra (https://www.grupopenascal.com/2020/11/16/precios-de-viagra-cialis-y-levitra)
comprar cialis sin receta en farmacia en espana (https://www.grupopenascal.com/2020/11/16/comprar-cialis-sin-receta-en-farmacia-en-espana)
comprar cenforce 150mg (https://www.grupopenascal.com/2020/11/16/comprar-cenforce-150mg)
comprar cialis generico internet opinion (https://www.grupopenascal.com/2020/11/16/comprar-cialis-generico-internet-opinion)
comprar kamagra personalmente (https://www.grupopenascal.com/2020/11/16/comprar-kamagra-personalmente)
propiedades de la pastilla cialis (https://www.grupopenascal.com/2020/11/16/propiedades-de-la-pastilla-cialis)
cenforce 100mg reviews (https://www.grupopenascal.com/2020/11/16/cenforce-100mg-reviews)
se necesita receta para comprar viagra en zaragoza (https://www.grupopenascal.com/2020/11/16/se-necesita-receta-para-comprar-viagra-en-zaragoza)
como comprar viagra en farmacia argentina (https://www.grupopenascal.com/2020/11/16/como-comprar-viagra-en-farmacia-argentina)
similar viagra espana 2019 (https://www.grupopenascal.com/2020/11/16/similar-viagra-espana-2019)
comprar viagra profesional online (https://www.grupopenascal.com/2020/11/16/comprar-viagra-profesional-online)
comprar viagra en espana pago contrareembolso (https://www.grupopenascal.com/2020/11/16/comprar-viagra-en-espana-pago-contrareembolso)
compra de viagra cobro revertido (https://www.grupopenascal.com/2020/11/16/compra-de-viagra-cobro-revertido)
barcelona donde comprar viagra (https://www.grupopenascal.com/2020/11/16/barcelona-donde-comprar-viagra)
compra segura de viagra por internet (https://www.grupopenascal.com/2020/11/16/compra-segura-de-viagra-por-internet)
Титла: Viagra online"Buy viagra online
Публикувано от: sharli в 20 Юли 2021, 04:15:15
cialis 20 mg sin receta (https://www.grupopenascal.com/2020/11/16/cialis-20-mg-sin-receta)
cenforce alicante (https://www.grupopenascal.com/2020/11/16/cenforce-alicante)
comprar cialis sur america (https://www.grupopenascal.com/2020/11/16/comprar-cialis-sur-america)
levitra 20 mg bucodispersable precio (https://www.grupopenascal.com/2020/11/16/levitra-20-mg-bucodispersable-precio)
levitra o cialis donde comprar en sevilla (https://www.grupopenascal.com/2020/11/16/levitra-o-cialis-donde-comprar-en-sevilla)
medicamento generico de cialis (https://www.grupopenascal.com/2020/11/16/medicamento-generico-de-cialis)
esfarmacos comprar viagra barato online (https://www.grupopenascal.com/2020/11/16/esfarmacos-comprar-viagra-barato-online)
precio cialis 20 online (https://www.grupopenascal.com/2020/11/16/precio-cialis-20-online)
comprar de forma segura cialis diario (https://www.grupopenascal.com/2020/11/16/comprar-de-forma-segura-cialis-diario)
genericos de la levitra (https://www.grupopenascal.com/2020/11/16/genericos-de-la-levitra)
viagra barato espana (https://www.grupopenascal.com/2020/11/16/viagra-barato-espana)
viagra precio por unidad (https://www.grupopenascal.com/2020/11/16/viagra-precio-por-unidad)
se necesita receta para comprar viagra cadiz (https://www.grupopenascal.com/2020/11/16/se-necesita-receta-para-comprar-viagra-cadiz)
comprar cialis en mano madrid (https://www.grupopenascal.com/2020/11/16/comprar-cialis-en-mano-madrid)
cusnro.puedesvtardar en.tkamrte una viagra una vez.comprada (https://www.grupopenascal.com/2020/11/16/cusnro-puedesvtardar-en-tkamrte-una-viagra-una-vez-comprada)
se puede comprar cialis en la farmacia (https://www.grupopenascal.com/2020/11/16/se-puede-comprar-cialis-en-la-farmacia)
comprar viagra en andorra sin receta (https://www.grupopenascal.com/2020/11/16/comprar-viagra-en-andorra-sin-receta)
foro probado comprar cyalis viagra levitra calidad (https://www.grupopenascal.com/2020/11/16/foro-probado-comprar-cyalis-viagra-levitra-calidad)
compra viagra envio en un dia (https://www.grupopenascal.com/2020/11/16/compra-viagra-envio-en-un-dia)
se puede comprar viagra en farmacias sin receta en espana (https://www.grupopenascal.com/2020/11/16/se-puede-comprar-viagra-en-farmacias-sin-receta-en-espana)
precio de cialis 10 (https://www.grupopenascal.com/2020/11/16/precio-de-cialis-10)
comprar levitra 10 mg bayer (https://www.grupopenascal.com/2020/11/16/comprar-levitra-10-mg-bayer)
cialis comprar sin receta (https://www.grupopenascal.com/2020/11/16/cialis-comprar-sin-receta)
comprar kamagra oral jelly benalmadena (https://www.grupopenascal.com/2020/11/16/comprar-kamagra-oral-jelly-benalmadena)
donde comprar levitra sin receta en bilbao (https://www.grupopenascal.com/2020/11/16/donde-comprar-levitra-sin-receta-en-bilbao)
farmacias online seguras comprar viagra sin receta en espana (https://www.grupopenascal.com/2020/11/16/farmacias-online-seguras-comprar-viagra-sin-receta-en-espana)
se necesita receta para la viagra en espana (https://www.grupopenascal.com/2020/11/16/se-necesita-receta-para-la-viagra-en-espana)
cialis 20 mg 4 dosis precio (https://www.grupopenascal.com/2020/11/16/cialis-20-mg-4-dosis-precio)
levitra generico precio en farmacias espana con receta (https://www.grupopenascal.com/2020/11/16/levitra-generico-precio-en-farmacias-espana-con-receta)
precios levitra y cialis (https://www.grupopenascal.com/2020/11/16/precios-levitra-y-cialis)
viagra precio farmacia espana (https://www.grupopenascal.com/2020/11/16/viagra-precio-farmacia-espana)
precio tadalafilo combix 20 mg (https://www.grupopenascal.com/2020/11/16/precio-tadalafilo-combix-20-mg)
precio del tadalafilo nombre comercial (https://www.grupopenascal.com/2020/11/16/precio-del-tadalafilo-nombre-comercial)
precio de las pastillas levitra 10 mg (https://www.grupopenascal.com/2020/11/16/precio-de-las-pastillas-levitra-10-mg)
comprar lovegra viagra femenina (https://www.grupopenascal.com/2020/11/16/comprar-lovegra-viagra-femenina)