forked from ZwiiCMS-Team/ZwiiCMS
[9.1.14] retrait module search
This commit is contained in:
parent
2be1cdac5c
commit
f9abf2f5da
@ -42,8 +42,7 @@ class common {
|
|||||||
'page',
|
'page',
|
||||||
'sitemap',
|
'sitemap',
|
||||||
'theme',
|
'theme',
|
||||||
'user',
|
'user'
|
||||||
'search'
|
|
||||||
];
|
];
|
||||||
private $data = [];
|
private $data = [];
|
||||||
private $hierarchy = [
|
private $hierarchy = [
|
||||||
|
@ -1,152 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
class search extends common {
|
|
||||||
|
|
||||||
public static $actions = [
|
|
||||||
'index' => self::GROUP_VISITOR,
|
|
||||||
];
|
|
||||||
|
|
||||||
// Liste de fonctions correspondant aux vues
|
|
||||||
|
|
||||||
public function index() {
|
|
||||||
if($this->isPost()) {
|
|
||||||
// Récupération de l'ensemble des données d'un site ZWII
|
|
||||||
// Lire le fichier core.json si il existe
|
|
||||||
// Traitement du formulaire
|
|
||||||
$success = true;
|
|
||||||
$result = '';
|
|
||||||
if(file_exists ('./site/data/core.json')) {
|
|
||||||
$json_source = file_get_contents('./site/data/core.json');
|
|
||||||
|
|
||||||
// Décoder le JSON en un array
|
|
||||||
$array = json_decode($json_source,true);
|
|
||||||
|
|
||||||
// Récupération du mot clef passé par le formulaire de ...view/index.php, avec caractères accentués
|
|
||||||
$motclef=$this->getInput('searchMotphraseclef');
|
|
||||||
|
|
||||||
$result = '<h1>Recherche avec le mot clef : '.$motclef.'<br/></h1>';
|
|
||||||
if ($motclef !== "" && strlen($motclef) > 2) {
|
|
||||||
$dejavu = '';
|
|
||||||
$nboccutotal = 0;
|
|
||||||
foreach ($array as $key1 => $value1) {
|
|
||||||
// Déterminer le chemin de tous les contenus (content) dans page ou module
|
|
||||||
if (($key1 ==='page' || $key1 ==='module') && is_array($value1) )
|
|
||||||
{
|
|
||||||
foreach ($value1 as $key2 => $value2)
|
|
||||||
{
|
|
||||||
if (is_array($value2))
|
|
||||||
{
|
|
||||||
foreach ($value2 as $key3 => $value3) {
|
|
||||||
if ($key3 === "content" && is_string($value3)) {
|
|
||||||
// compte le nombre d'occurrences dans la page
|
|
||||||
$nboccu=0;
|
|
||||||
// le contenu à explorer est dans $value3, le nom de la page est $key2
|
|
||||||
//Nettoyage de $value3 : on enlève tout ce qui est inclus entre < et >
|
|
||||||
$value3=$this->nettoyer_html($value3);
|
|
||||||
//accentuation
|
|
||||||
$value3=html_entity_decode($value3);
|
|
||||||
// Recherche et affichage des occurrences
|
|
||||||
do {
|
|
||||||
$occu = stristr($value3,$motclef);
|
|
||||||
if ($occu !== '') {
|
|
||||||
if ($key2!=$dejavu) {
|
|
||||||
$result .= '<p><br/>Mot clef trouvé dans la page : <a href="./?'.$key2.'" target="_blank" rel="noopener">'.$key2.'</a><br/></p>';
|
|
||||||
}
|
|
||||||
$dejavu=$key2;
|
|
||||||
$nboccu++;
|
|
||||||
//Affichage d'un extrait de $value3
|
|
||||||
$result .= '<p>'.$nboccu.' - "...<em>'.substr($occu,0,200).'</em>..."<br/></p>';
|
|
||||||
//pour recherche d'une autre occurence dans le même contenu
|
|
||||||
$value3=substr($occu,100);
|
|
||||||
}
|
|
||||||
} while($occu != '');
|
|
||||||
$dejavu = '';
|
|
||||||
$nboccutotal = $nboccutotal + $nboccu;
|
|
||||||
$nboccu = 0;
|
|
||||||
} elseif ($key1 == "module" && is_array($value3)) {
|
|
||||||
foreach ($value3 as $key4 => $value4) {
|
|
||||||
if ($key4 == "content" && is_string($value4) ) {
|
|
||||||
$nboccu = 0;
|
|
||||||
// le contenu à explorer est dans $value4, le nom du module/page est $key2/$key3
|
|
||||||
//Nettoyage de $value4 : on enlève tout ce qui est inclus entre < et >
|
|
||||||
$value4 = $this->nettoyer_html($value4);
|
|
||||||
//accentuation
|
|
||||||
$value4 = html_entity_decode($value4);
|
|
||||||
// Recherche et affichage des occurrences
|
|
||||||
do {
|
|
||||||
$occu = stristr($value4,$motclef);
|
|
||||||
if ($occu != '') {
|
|
||||||
if ($key3 != $dejavu) {
|
|
||||||
$result .= '<p><br/>Mot clef trouvé dans la page : <a href="./?'.$key2.'/'.$key3.'" target="_blank" rel="noopener">'.$key2.'/'.$key3.'</a><br/></p>';
|
|
||||||
}
|
|
||||||
$dejavu = $key3;
|
|
||||||
$nboccu++;
|
|
||||||
$result .= '<p>'.$nboccu.' - "...<em>'.substr($occu,0,200).'</em>..."<br/></p>';
|
|
||||||
}
|
|
||||||
//pour recherche d'une autre occurrence dans le même contenu
|
|
||||||
$value4 = substr($occu,100);
|
|
||||||
} while($occu != '');
|
|
||||||
$dejavu = '';
|
|
||||||
$nboccutotal = $nboccutotal + $nboccu;
|
|
||||||
$nboccu = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($nboccutotal==0) {
|
|
||||||
$notification = '<p><br/>Mot clef non trouvé, avez-vous pensé aux accents ?</p> ';
|
|
||||||
$success = false;
|
|
||||||
} else {
|
|
||||||
$result .= '<p><br/>Nombre total d\'occurrences : '.$nboccutotal.'</p>';
|
|
||||||
$notification = 'Nombre total d\'occurrences : '.$nboccutotal;
|
|
||||||
$success = true;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$notification = 'Trop court ! minimum 3 caractères';
|
|
||||||
$result = '<p><br/>Trop court ! minimum 3 caractères</p>';
|
|
||||||
$success = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
$notification = 'Fichier core.json introuvable';
|
|
||||||
$success = false;
|
|
||||||
}
|
|
||||||
$_POST['result'] = $result;
|
|
||||||
$_POST['occurence'] = $nboccutotal;
|
|
||||||
// Valeurs en sortie, affichage du résultat
|
|
||||||
$this->addOutput([
|
|
||||||
'title' => 'Rechercher dans le site',
|
|
||||||
'view' => 'result',
|
|
||||||
'notification' => $notification,
|
|
||||||
'state' => $success
|
|
||||||
]);
|
|
||||||
} else {
|
|
||||||
// Valeurs en sortie, affichage du formulaire
|
|
||||||
$this->addOutput([
|
|
||||||
'title' => 'Rechercher dans le site',
|
|
||||||
'view' => 'index'
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Déclaration de la fonction nettoyer(string $contenu) : string
|
|
||||||
* Supprime de $contenu les caractères placés entre < et >, donc les balises html comme <p> <br/> etc...
|
|
||||||
* Retourne $contenu nettoyée, le résultat est sensiblement différent de celui obtenu avec la fonction strip_tags()
|
|
||||||
*/
|
|
||||||
private function nettoyer_html($contenu){
|
|
||||||
do {
|
|
||||||
$pos1=strpos($contenu,chr(60));
|
|
||||||
if($pos1!==false) {
|
|
||||||
$pos2=strpos($contenu,chr(62));
|
|
||||||
if($pos2!==false) $contenu=substr_replace($contenu," ",$pos1,($pos2 - $pos1 + 1));
|
|
||||||
}
|
|
||||||
} while($pos1!==false);
|
|
||||||
return $contenu;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
?>
|
|
@ -1,28 +0,0 @@
|
|||||||
<?php echo template::formOpen('searchForm'); ?>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col2">
|
|
||||||
<?php $href = helper::baseUrl() . $this->getUrl(2); ?>
|
|
||||||
<?php if ($this->getData(['page', $this->getUrl(2), 'moduleId']) === 'redirection' || 'code')$href = helper::baseUrl(); ?>
|
|
||||||
<?php echo template::button('searchBack', [
|
|
||||||
'class' => 'buttonGrey',
|
|
||||||
'href' => $href,
|
|
||||||
'ico' => 'left',
|
|
||||||
'value' => 'Retour'
|
|
||||||
]); ?>
|
|
||||||
</div>
|
|
||||||
<div class="col2 offset8">
|
|
||||||
<?php echo template::submit('pageEditSubmit'); ?>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col12">
|
|
||||||
<div class="block">
|
|
||||||
<h4>Zone de saisie : </h4>
|
|
||||||
<?php echo template::text('searchMotphraseclef', [
|
|
||||||
'label' => 'Mot ou phrase clef',
|
|
||||||
'value' => '',
|
|
||||||
'help' => 'Saisir un mot ou une phrase clef pour votre recherche, n\'oubliez pas les accents.'
|
|
||||||
]); ?>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<?php echo template::formClose(); ?>
|
|
@ -1,21 +0,0 @@
|
|||||||
<?php echo template::formOpen('searchForm'); ?>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col2">
|
|
||||||
<?php $href = helper::baseUrl() . $this->getUrl(2); ?>
|
|
||||||
<?php if ($this->getData(['page', $this->getUrl(2), 'moduleId']) === 'redirection' || 'code')$href = helper::baseUrl(); ?>
|
|
||||||
<?php echo template::button('searchBack', [
|
|
||||||
'class' => 'buttonGrey',
|
|
||||||
'href' => $href . 'search',
|
|
||||||
'ico' => 'left',
|
|
||||||
'value' => 'Retour'
|
|
||||||
]); ?>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col12">
|
|
||||||
<div class="block">
|
|
||||||
<h4>Résulats</h4>
|
|
||||||
<?php echo $_POST['result']; ?>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<?php echo template::formClose(); ?>
|
|
Loading…
Reference in New Issue
Block a user