feat(action) : valeur action + remove wiki-model
This commit is contained in:
parent
53404a7825
commit
31927acf8c
3 changed files with 71 additions and 1381 deletions
71
actions/valeur.php
Normal file
71
actions/valeur.php
Normal file
|
@ -0,0 +1,71 @@
|
|||
<?php
|
||||
/**
|
||||
* valeur : permet d'extraire le contenu d'une valeur de fiche bazar à partir d'une url.
|
||||
*/
|
||||
// +------------------------------------------------------------------------------------------------------+
|
||||
// | ENTETE du PROGRAMME |
|
||||
// +------------------------------------------------------------------------------------------------------+
|
||||
// test de sécurité pour vérifier si on passe par wiki
|
||||
if (!defined('WIKINI_VERSION')) {
|
||||
die('accès direct interdit');
|
||||
}
|
||||
|
||||
// url de la fiche bazar
|
||||
$url = $this->GetParameter('url');
|
||||
if (empty($url) && isset($this->config['source_url']) && !empty($this->config['source_url'])) {
|
||||
$url = $this->config['source_url'];
|
||||
}
|
||||
if (!empty($url)) {
|
||||
// parameter of this action
|
||||
$champ = $this->GetParameter('champ');
|
||||
$image = $this->GetParameter('image');
|
||||
$texte = $this->GetParameter('texte');
|
||||
$defaut = $this->GetParameter('defaut');
|
||||
|
||||
if (!empty($champ)) {
|
||||
// on harge dans une variable globale pour le cas ou l'action est appelée plusieurs fois
|
||||
if (!isset($GLOBALS['externalpage'][$url])) {
|
||||
$GLOBALS['externalpage'][$url] = file_get_contents($url.'/html');
|
||||
}
|
||||
if (!$GLOBALS['externalpage'][$url] === false) {
|
||||
|
||||
// le titre est un cas particulier
|
||||
if ($champ == 'bf_titre') {
|
||||
$regexp = '/<h1 class="BAZ_fiche_titre">(.*)<\/h1>/Uis';
|
||||
} elseif ($champ == 'id_fiche') {
|
||||
// l'id est un cas particulier
|
||||
$urlparsed = parse_url($url);
|
||||
echo preg_replace('/(.*?)wiki=(.*?)/Ui', '$2', $urlparsed['query']);
|
||||
return;
|
||||
} elseif (!empty($image) && ($image == 'lien' || $image == '1')) {
|
||||
// cas des images
|
||||
$regexp = '/<a data-id="'.$champ.'".*href="(.*)".*>\s*<img.*<\/a>/Uis';
|
||||
} else {
|
||||
$regexp = '/<div.*data-id="'.$champ.'".*>\s*.*\s*<span class="BAZ_texte">\s*(.*)\s*<\/span>/Uis';
|
||||
}
|
||||
preg_match_all($regexp, $GLOBALS['externalpage'][$url], $matches);
|
||||
|
||||
if (isset($matches[1]) && count($matches[1]) > 0) {
|
||||
if (!empty($texte) && $texte != 'lien') {
|
||||
echo preg_replace('/<a.*href="(.*)".*>.*<\/a>/Ui', '<a href="$1">'.trim($texte).'</a>', trim(array_shift($matches[1])));
|
||||
} elseif (!empty($texte) && $texte == 'lien') {
|
||||
echo preg_replace('/<a.*href="(.*)".*>.*<\/a>/Ui', '$1', array_shift($matches[1]));
|
||||
} elseif ($image == '1') {
|
||||
echo '<img loading="lazy" class="img-responsive" src="'.array_shift($matches[1]).'" alt="image '.$champ.'">';
|
||||
} else {
|
||||
echo trim(array_shift($matches[1]));
|
||||
}
|
||||
} else {
|
||||
if (isset($defaut) && !empty($defaut)) {
|
||||
echo $defaut;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
echo '<div class="alert alert-danger alert-error"><strong>'._t('BAZAR_ACTION_VALEUR').'</strong> : '._t('BAZAR_URL_ERROR').' : '.$url.'.</div>'."\n";
|
||||
}
|
||||
} else {
|
||||
echo '<div class="alert alert-danger alert-error"><strong>'._t('BAZAR_ACTION_VALEUR').'</strong> : '._t('BAZAR_PARAM_CHAMP_REQUIRED').'.</div>'."\n";
|
||||
}
|
||||
} else {
|
||||
echo '<div class="alert alert-danger alert-error"><strong>'._t('BAZAR_ACTION_VALEUR').'</strong> : '._t('BAZAR_PARAM_URL_REQUIRED').'.</div>'."\n";
|
||||
}
|
File diff suppressed because one or more lines are too long
|
@ -1 +0,0 @@
|
|||
{"label":"https:\/\/mutualisation.cc\/fors","sourceUrl":"https:\/\/mutualisation.cc\/fors","dateOfCreation":"2023-09-18 15:42:10"}
|
Loading…
Reference in a new issue