Commit 2c5f16bd by Van

feat(all): create some filters (to end). Update the readme (To end). Update templates by type

parent e1cfcbc9
......@@ -43,7 +43,214 @@ Change this keys in configuration:
In order to parse data, you can use twig filter
Exemple:
********************************************************************************************************
####TourinsoftFilter :
######Exemple
```
Valeur en entrée :
nay-bastide-depart-140925-triple.pdf|nay-bastide-depart-140925-triple#nay-faubourgs-depart-140926-triple.pdf|nay-faubourgs-depart-140926-triple"
```
```
Application du filtre :
{{ record.fichiersnom|tourinsoft) }}
```
```
Valeur en sortie :
array:2 [▼
0 => array:2 [▼
0 => "nay-bastide-depart-140925-triple.pdf"
1 => "nay-bastide-depart-140925-triple"
]
1 => array:2 [▼
0 => "nay-faubourgs-depart-140926-triple.pdf"
1 => "nay-faubourgs-depart-140926-triple"
]
]
```
********************************************************************************************************
####FullOpeningFilter :
######Date d'ouverture | Date de fermeture. Pour chaque jour de la semaine à partir de Lundi, Heure d'ouverture 1 | Heure de fermeture 1| Heure d'ouverture 2 | Heure de fermeture 2 (au format hh:mm) puis jours de fermeture.
######Exemple
```
Valeur en entrée :
"01/01/2018|31/12/2018|08:00|12:00|14:00|18:00|08:00|12:00|14:00|18:00|08:00|12:00|14:00|18:00|08:00|12:00|14:00|18:00|08:00|12:00|14:00|18:00|||||||||Samedi-Dimanche"
```
```
Application du filtre :
{% for open in record.ouverture|tourinsoft|opening %}
{{open}}
{% endfor %}
```
```
Valeur en sortie :
Ouverture du 01/01/2018 au 31/12/2018
Lundi 08:00-12:00, 14:00-18:00
Mardi 08:00-12:00, 14:00-18:00
Mercredi 08:00-12:00, 14:00-18:00
Jeudi 08:00-12:00, 14:00-18:00
Vendredi 08:00-12:00, 14:00-18:00
Jours de fermeture : Samedi-Dimanche
```
********************************************************************************************************
####TarifFilter :
###### Intitulé du tarif | Tarif minimum | Tarif maximum | Complément d'information
######Exemple
```
Valeur en entrée :
"Tarif de groupe|3,20|3,20|Visite guidée adulte#Tarif de groupe|2,10|2,10|Visite guidée enfants#Gratuit|0,00|0,00|Visites libres"```
```
```
Application du filtre :
{{ record.tarifs|tourinsoft|tarif}}
```
```
Valeur en sortie :
Chambre double : de 65,00 € à 98,00 €
Petit-déjeuner : de 10,00 € à 10,00 €
Chambre familiale : de 78,00 € à 108,00 €
Chambre single : de 62,00 € à 92,00 €
Soirée étape affaires : de 86,00 € à 86,00 €
Autre tarif (insolite by logis chalet) : de 68,00 € à 88,00 €
```
********************************************************************************************************
####ValidatedDateFilter :
######Date de début de validité de la promo | Date de fin de validité de la promo
######Exemple
```
Valeur en entrée :
"25/08/2018|30/09/2018"
```
```
Application du filtre :
{{ record.listingdatesvalidite|tourinsoft|validatedDate }}
```
{{record.ouverture|tourinsoft}}
```
Valeur en sortie :
Valable du 25/08/2018 au 30/09/2018
```
********************************************************************************************************
####FullDatesFilter :
######Date de début et de fin (au format jj/mm/aaa), heure d'ouverture et de fermeture 1, heure d'ouverture et de fermeture 2
######Exemple
```
Valeur en entrée :
"04/11/2018|04/11/2018|10:00||||"
"06/07/2018|28/10/2018|15:00|19:00|||"
```
```
Application du filtre :
{% for open in record.datescomplet|tourinsoft|fullDates %}
{{ open }}
{% endfor %}
```
```
Valeur en sortie :
Le 04/11/2018 à partir de 10:00
Du 06/07/2018 au 28/10/2018 de 15:00 à 19:00
```
********************************************************************************************************
####CommunicationFilter :
######
######Exemple
```
Valeur en entrée :
"http://www.gites64.com/fiche?NUM=114046|Gites de France"
autre exemple :
+33 5 59 11 20 64|GITES DE FRANCE#+33 5 59 46 37 00|"
```
```
Application du filtre :
{% for url in record.urlcomplet|tourinsoft %}
<a class="button" target="_blank" href="{{ url[0] }}">
Voir le site web
{% if url[1] != null %}
de {{ url[1] }}
{% endif %}
</a>
{% endfor %}
Pour l'autre exemple
{% for tel in record.telcomplet|tourinsoft|communication %}
<p> Tél. {{ tel|raw }} </p><br>
{% endfor %}
```
```
Valeur en sortie :
<a class="button" target="_blank" href="http://www.gites64.com/fiche?NUM=114046">
Voir le site web de Gites de France </a>
Résultat de l'autre exemple :
Tél. GITES DE FRANCE +33 5 59 11 20 64
Tél. +33 5 59 46 37 00
```
********************************************************************************************************
tourinsoft:
url: 'http://wcf.tourinsoft.com/Syndication/3.0/'
ot_key: ''
cdn_url: ''
cdn_url: 'http://cdt64.media.tourinsoft.eu/upload/'
default_locale: 'FR'
locales : ['FR', 'EN', 'ES']
field_mapping:
......
......@@ -6,6 +6,13 @@ use Bolt\Asset\File\JavaScript;
use Bolt\Asset\File\Stylesheet;
use Bolt\Controller\Zone;
use Bolt\Events\CronEvents;
use Bolt\Extension\Appolo\Tourinsoft\TwigFilters\CommunicationFilter;
use Bolt\Extension\Appolo\Tourinsoft\TwigFilters\FilesFilter;
use Bolt\Extension\Appolo\Tourinsoft\TwigFilters\FullDatesFilter;
use Bolt\Extension\Appolo\Tourinsoft\TwigFilters\FullOpeningFilter;
use Bolt\Extension\Appolo\Tourinsoft\TwigFilters\PhotoFilter;
use Bolt\Extension\Appolo\Tourinsoft\TwigFilters\TelFilter;
use Bolt\Extension\Appolo\Tourinsoft\TwigFilters\ValidatedDateFilter;
use Bolt\Extension\DatabaseSchemaTrait;
use Bolt\Extension\StorageTrait;
use Bolt\Menu\MenuEntry;
......@@ -89,9 +96,17 @@ class TourinsoftExtension extends SimpleExtension
return [
'tourinsoft' => [[TourinsoftFilter::class, 'run']],
'tarif' => [[TarifFilter::class, 'run'], ['is_safe' => ['html'] ]],
'communication' => [[CommunicationFilter::class, 'run'], ['is_safe' => ['html'] ]],
'label' => [[LabelFilter::class, 'run'], ['is_safe' => ['html'] ]],
'hashtag' => [[HashtagToArray::class, 'run']],
'pipe' => [[PipeToArray::class, 'run']],
'mainPhoto' => [[new PhotoFilter($this->getConfig(), true), 'run']], ['is_safe' => ['html']],
'photos' => [[new PhotoFilter($this->getConfig(), false), 'run']], ['is_safe' => ['html']],
'files' => [[new FilesFilter($this->getConfig(), false), 'run']], ['is_safe' => ['html']],
'opening' => [[FullOpeningFilter::class, 'run'], ['is_safe' => ['html'] ]],
'fullDates' => [[FullDatesFilter::class, 'run'], ['is_safe' => ['html'] ]],
'validatedDate' => [[ValidatedDateFilter::class, 'run'], ['is_safe' => ['html']]]
];
}
......
<?php
namespace Bolt\Extension\Appolo\Tourinsoft\TwigFilters;
/**
* Class CommunicationFilter
* @package Bolt\Extension\Appolo\Tourinsoft\TwigFilters
*/
class CommunicationFilter
{
/**
* @param $input
* @return array
*/
public static function run($input)
{
$data = [];
if(!is_array($input)) {
return $input;
}
foreach ($input as $item) {
if (!empty($item[0])){
$complement = ' ';
if (!empty($item[1])){
$complement = $item[1]. ' ';
}
}
$data[$item[0]] = $complement . $item[0];
}
return $data;
}
}
\ No newline at end of file
<?php
namespace Bolt\Extension\Appolo\Tourinsoft\TwigFilters;
/**
* Class FilesFilter
* @package Bolt\Extension\Appolo\Tourinsoft\TwigFilters
*/
class FilesFilter
{
/**
* @var string
*/
private $cdnUrl;
/**
* @var bool
*/
private $onlyFirst;
/**
* MainPhotoFilter constructor.
* @param array $config
*/
public function __construct(array $config = [], $onlyFirst = false)
{
$this->cdnUrl = (!empty($config['tourinsoft']['cdn_url'])) ? $config['tourinsoft']['cdn_url'] : '';
$this->onlyFirst = $onlyFirst;
}
/**
* @param $input
* @return string
*/
public function run($input)
{
$files = explode('#', $input);
if(empty($files[0])) {
return null;
}
/* if($this->onlyFirst) {
return $this->cdnUrl.$files[0];
}*/
foreach ($files as &$photo) {
$photo = $this->cdnUrl.$photo;
}
return $files;
}
}
\ No newline at end of file
<?php
namespace Bolt\Extension\Appolo\Tourinsoft\TwigFilters;
class FullDatesFilter
{
/**
* @param $input
* @return array
*/
public static function run($input)
{
$data = [];
if(empty($input[0]) || !is_array($input[0])) {
return $input;
}
$item = $input[0];
$data['days'] = null;
if (!empty($item[0]) && ($item[0] === $item[1])){
$data['days'] = 'Le ' .$item[0] ;
}elseif (!empty($item[0]) && ($item[0] !== $item[1])){
$data['days'] = 'Du ' .$item[0] . ' au ' .$item[1];
}
$data['hours'] = null;
if(!empty($item[2]) && !empty($item[3]) && !empty($item[4]) && !empty($item[5])) {
$data['hours'] = 'de ' .$item[2]. ' à ' .$item[3]. ' et de ' .$item[4]. ' à ' .$item[5];
} elseif (!empty($item[2]) && empty($item[3]) && empty($item[4]) && !empty($item[5])) {
$data['hours'] = 'de ' .$item[2]. ' à' .$item[5];
} elseif (!empty($item[2]) && !empty($item[3]) && empty($item[4]) && empty($item[5])) {
$data['hours'] = 'de ' .$item[2]. ' à ' .$item[3];
} elseif (empty($item[2]) && empty($item[3]) && !empty($item[4]) && !empty($item[5])) {
$data['hours'] = 'de ' .$item[4]. ' à ' .$item[5];
} elseif (!empty($item[2]) && empty($item[3]) && empty($item[4]) && empty($item[5])){
$data['hours'] = 'à partir de ' .$item[2];
}
return $data;
}
}
\ No newline at end of file
<?php
namespace Bolt\Extension\Appolo\Tourinsoft\TwigFilters;
class FullOpeningFilter
{
/**
* @param $input
* @return array
*/
public static function run($input)
{
$data = [];
if(empty($input[0]) || !is_array($input[0])) {
return $input;
}
$item = $input[0];
$data['open'] = (!empty($item[0])) ? 'Ouverture du ' .$item[0] . ' au ' .$item[1] : '';
$data['monday'] = null;
if(!empty($item[2]) && !empty($item[3]) && !empty($item[4]) && !empty($item[5])) {
$data['monday'] = 'Lundi ' .$item[2]. '-' .$item[3]. ', ' .$item[4]. '-' .$item[5];
} elseif (!empty($item[2]) && empty($item[3]) && empty($item[4]) && !empty($item[5])) {
$data['monday'] = 'Lundi ' .$item[2]. '-' .$item[5];
} elseif (!empty($item[2]) && !empty($item[3]) && empty($item[4]) && empty($item[5])) {
$data['monday'] = 'Lundi ' .$item[2]. '-' .$item[3];
} elseif (empty($item[2]) && empty($item[3]) && !empty($item[4]) && !empty($item[5])) {
$data['monday'] = 'Lundi ' .$item[4]. '-' .$item[5];
}
$data['tuesday'] = null;
if(!empty($item[6]) && !empty($item[7]) && !empty($item[8]) && !empty($item[9])) {
$data['tuesday'] = 'Mardi ' .$item[6]. '-' .$item[7]. ', ' .$item[8]. '-' .$item[9];
} elseif (!empty($item[6]) && empty($item[7]) && empty($item[8]) && !empty($item[9])) {
$data['tuesday'] = 'Mardi ' .$item[6]. '-' .$item[9];
} elseif (!empty($item[6]) && !empty($item[7]) && empty($item[8]) && empty($item[9])) {
$data['tuesday'] = 'Mardi ' .$item[6]. '-' .$item[7];
} elseif (empty($item[6]) && empty($item[7]) && !empty($item[8]) && !empty($item[9])) {
$data['tuesday'] = 'Mardi ' .$item[8]. '-' .$item[9];
}
$data['wednesday'] = null;
if(!empty($item[10]) && !empty($item[11]) && !empty($item[12]) && !empty($item[13])) {
$data['wednesday'] = 'Mercredi ' .$item[10]. '-' .$item[11]. ', ' .$item[12]. '-' .$item[13];
} elseif (!empty($item[10]) && empty($item[11]) && empty($item[12]) && !empty($item[13])) {
$data['wednesday'] = 'Mercredi ' .$item[10]. '-' .$item[13];
} elseif (!empty($item[10]) && !empty($item[11]) && empty($item[12]) && empty($item[13])) {
$data['wednesday'] = 'Mercredi ' .$item[10]. '-' .$item[11];
} elseif (empty($item[10]) && empty($item[11]) && !empty($item[12]) && !empty($item[13])) {
$data['wednesday'] = 'Mercredi ' .$item[12]. '-' .$item[13];
}
$data['thursday'] = null;
if(!empty($item[14]) && !empty($item[15]) && !empty($item[16]) && !empty($item[17])) {
$data['thursday'] = 'Jeudi ' .$item[14]. '-' .$item[15]. ', ' .$item[16]. '-' .$item[17];
} elseif (!empty($item[14]) && empty($item[15]) && empty($item[16]) && !empty($item[17])) {
$data['thursday'] = 'Jeudi ' .$item[14]. '-' .$item[17];
} elseif (!empty($item[14]) && !empty($item[15]) && empty($item[16]) && empty($item[17])) {
$data['thursday'] = 'Jeudi ' .$item[14]. '-' .$item[15];
} elseif (empty($item[14]) && empty($item[15]) && !empty($item[16]) && !empty($item[17])) {
$data['thursday'] = 'Jeudi ' .$item[16]. '-' .$item[17];
}
$data['friday'] = null;
if(!empty($item[18]) && !empty($item[19]) && !empty($item[20]) && !empty($item[21])) {
$data['friday'] = 'Vendredi ' .$item[18]. '-' .$item[19]. ', ' .$item[20]. '-' .$item[21];
} elseif (!empty($item[18]) && empty($item[19]) && empty($item[20]) && !empty($item[21])) {
$data['friday'] = 'Vendredi ' .$item[18]. '-' .$item[21];
} elseif (!empty($item[18]) && !empty($item[19]) && empty($item[20]) && empty($item[21])) {
$data['friday'] = 'Vendredi ' .$item[18]. '-' .$item[19];
} elseif (empty($item[18]) && empty($item[19]) && !empty($item[20]) && !empty($item[21])) {
$data['friday'] = 'Vendredi ' .$item[20]. '-' .$item[21];
}
$data['saturday'] = null;
if(!empty($item[22]) && !empty($item[23]) && !empty($item[24]) && !empty($item[25])) {
$data['saturday'] = 'Samedi ' .$item[22]. '-' .$item[23]. ', ' .$item[24]. '-' .$item[25];
} elseif (!empty($item[22]) && empty($item[23]) && empty($item[24]) && !empty($item[25])) {
$data['saturday'] = 'Samedi ' .$item[22]. '-' .$item[25];
} elseif (!empty($item[22]) && !empty($item[23]) && empty($item[24]) && empty($item[25])) {
$data['saturday'] = 'Samedi ' .$item[22]. '-' .$item[23];
} elseif (empty($item[22]) && empty($item[23]) && !empty($item[24]) && !empty($item[25])) {
$data['saturday'] = 'Samedi ' .$item[24]. '-' .$item[25];
}
$data['sunday'] = null;
if(!empty($item[26]) && !empty($item[27]) && !empty($item[28]) && !empty($item[29])) {
$data['sunday'] = 'Dimanche ' .$item[26]. '-' .$item[27]. ', ' .$item[28]. '-' .$item[29];
} elseif (!empty($item[26]) && empty($item[27]) && empty($item[28]) && !empty($item[29])) {
$data['sunday'] = 'Dimanche ' .$item[26]. '-' .$item[29];
} elseif (!empty($item[26]) && !empty($item[27]) && empty($item[28]) && empty($item[29])) {
$data['sunday'] = 'Dimanche ' .$item[26]. '-' .$item[27];
} elseif (empty($item[26]) && empty($item[27]) && !empty($item[28]) && !empty($item[29])) {
$data['sunday'] = 'Dimanche ' .$item[28]. '-' .$item[29];
}
$data['closed'] = (!empty($item[30])) ? 'Jours de fermeture : ' .$item[30] : '';
return $data;
}
}
\ No newline at end of file
......@@ -24,14 +24,15 @@ class LabelFilter
foreach ($item as $key => $value){
switch ($value) {
case 'Hébergement pêche' :
$html .= '<img src="http://tourisme-bearn-paysdenay.com/templates/otpaysdenay/img/labels/hebergement-peche.jpg"> ';
$html .= '<img src="http://tourisme-bearn-paysdenay.com/templates/otpaysdenay/img/labels/hebergement-peche.jpg">';
break;
case 'Qualité Tourisme' :
$html .= ' <img src="http://tourisme-bearn-paysdenay.com/templates/otpaysdenay/img/labels/qualite-tourisme.jpg"> ';
$html .= '<img src="http://tourisme-bearn-paysdenay.com/templates/otpaysdenay/img/labels/qualite-tourisme.jpg">';
break;
}
}
}
return $html;
}
}
\ No newline at end of file
<?php
namespace Bolt\Extension\Appolo\Tourinsoft\TwigFilters;
/**
* Class PhotoFilter
* @package Bolt\Extension\Appolo\Tourinsoft\TwigFilters
*/
class PhotoFilter
{
/**
* @var string
*/
private $cdnUrl;
/**
* @var bool
*/
private $onlyFirst;
/**
* MainPhotoFilter constructor.
* @param array $config
*/
public function __construct(array $config = [], $onlyFirst = false)
{
$this->cdnUrl = (!empty($config['tourinsoft']['cdn_url'])) ? $config['tourinsoft']['cdn_url'] : '';
$this->onlyFirst = $onlyFirst;
}
/**
* @param $input
* @return string
*/
public function run($input)
{
$photos = explode('#', $input);
if(empty($photos[0])) {
return null;
}
if($this->onlyFirst) {
return $this->cdnUrl.$photos[0];
}
foreach ($photos as &$photo) {
$photo = $this->cdnUrl.$photo;
}
return $photos;
}
}
\ No newline at end of file
......@@ -10,19 +10,37 @@ class TarifFilter
{
/**
* @param $input
* @return string
* @return array
*/
public static function run($input)
{
$html = '';
$data = [];
if(!is_array($input)) {
return $input;
}
foreach ($input as $item) {
$html .= '<strong>'.$item[0].': </strong> de '.$item[1].' € à '.$item[2].' € <br />';
if(!empty($item[0])) {
$complement = '';
$amount = '';
if(!empty($item[3])) {
$complement = ' (' . $item[3] . ') ';
}
return $html;
if(!empty(floatval($item[1]))) {
if(floatval($item[1]) != floatval($item[2])) {
$amount = ': de ' . $item[1] . ' € à ' . $item[2] . ' €';
} else {
$amount = ': ' . $item[1] . ' €';
}
}
$data[$item[0]] = '<strong>' . $item[0] .$complement .' </strong> '.$amount;
}
}
return $data;
}
}
\ No newline at end of file
<?php
namespace Bolt\Extension\Appolo\Tourinsoft\TwigFilters;
class ValidatedDateFilter
{
/**
* @param $input
* @return string
*/
public static function run($input)
{
$html = '';
if(!is_array($input)) {
return $input;
}
$item = $input[0];
$html .= '<strong>Offre valable du '.$item[0]. ' au '.$item[1]. '</strong>';
return $html;
}
}
\ No newline at end of file
......@@ -95,10 +95,17 @@ class ContentTypeFile
];
}
if (!empty($fields['nomoffre'])) {
$fields['slug'] = [
'type' => 'slug',
'uses' => 'nomoffre'
];
}else{
$fields['slug'] = [
'type' => 'slug',
'uses' => 'listingnom'
];
}
if(!empty($this->options['locales'])) {
foreach ($this->options['locales'] as $locale) {
......
......@@ -94,7 +94,11 @@ class Data
$data[$key] = $v;
}
$data['title'] = $data['syndicobjectname'];
if (!empty($data['nomoffre'])){
$data['slug'] = Slugify::create()->slugify($data['nomoffre']);
}else{
$data['slug'] = Slugify::create()->slugify($data['listingnom']);
}
$data['status'] = 'published';
$data['datepublish'] = new \DateTimeImmutable();
$this->getTranslatedItem($data);
......@@ -117,7 +121,11 @@ class Data
if ($locale == $this->options['default_locale']) {
$data[$dataKey] = json_encode([]);
if (!empty($data['nomoffre'])){
$data[$slugKey] = Slugify::create()->slugify($data['nomoffre']);
}else{
$data[$slugKey] = Slugify::create()->slugify($data['listingnom']);
}
} else {
$dataLocale = $this->getDataForLocales($locale, $data['syndicobjectid']);
if(!empty($dataLocale)) {
......@@ -125,7 +133,11 @@ class Data
$data[$slugKey] = $dataLocale['slug'];
} else {
$data[$dataKey] = json_encode([]);
if (!empty($data['nomoffre'])){
$data[$slugKey] = Slugify::create()->slugify($data['nomoffre']);
}else{
$data[$slugKey] = Slugify::create()->slugify($data['listingnom']);
}
}
}
......@@ -149,7 +161,11 @@ class Data
$data[$key] = $v;
}
$data['title'] = $data['syndicobjectname'];
if (!empty($data['nomoffre'])){
$data['slug'] = Slugify::create()->slugify($locale. '-' .$data['nomoffre']);
}else{
$data['slug'] = Slugify::create()->slugify($locale. '-' .$data['listingnom']);
}
return $data;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment