Correction requête de récupération de l'horoscope

Helloo,

Il y a quelques jours, je crois avoir vu passer un message sur le plugin horoscope qui ne fonctionnait plus.
Je n’arrive plus à le retrouver alors je crée ce nouveau post pour proposer une nouvelle correction.

:play_button: Dans le fichier \core\class\horoscope.class.php, il faut effectuer les modifications suivantes :

public static function getHoroscopeForSigne_Day($signe_zodiaque, $name, $horo_type)
{
    $horoscope['signe'] = $signe_zodiaque;
    if ($horo_type == 'astro_jour' || $horo_type == 'astro_jour_hebdo') {
        $signe_clean = strtolower($signe_zodiaque);
        $url = "https://www.astroo.com/horoscopes/horoscope_" . $signe_clean . ".php";
        $options = [
            'http' => [
                'method' => 'GET',
                'header' => "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36\r\n"
            ]
        ];
        $context = stream_context_create($options);

        log::add('horoscope', 'debug', '│┌── :fg-info:' . __('Info requête directe pour l\'horoscope du jour', __FILE__) . ':/fg: ──');
        log::add('horoscope', 'debug', '││ :fg-info:URL : :/fg:' . $url);

        $html = file_get_contents($url, false, $context);

        if ($html === FALSE) {
            log::add('horoscope', 'debug', '││:fg-danger:' . __('Erreur de chargement du site Astroo', __FILE__) . ':/fg:');
            return false;
        }

        try {
            $html = html_entity_decode($html, ENT_QUOTES, 'UTF-8');

            preg_match('/class="tegb" style="font:18px[^>]*>(.*?)<\/p>/si', $html, $matches);

            $horoscope['date'] = date('Y-m-d');

            if (isset($matches[1])) {
                $texte = trim(strip_tags($matches[1]));
                $texte_nettoye = preg_replace('/Cette semaine\s*\.\.\.\s*$/i', '', $texte);

                $horoscope['horoscope'] = trim($texte_nettoye);

                log::add('horoscope', 'debug', '││ :fg-info:' . __('Texte récupéré avec succès pour', __FILE__) . ':/fg: : ' . $signe_zodiaque);
            } else {
                log::add('horoscope', 'error', '││ :fg-danger:' . __('Structure HTML modifiée ou signe introuvable', __FILE__) . ':/fg:');
                $horoscope['horoscope'] = __('Données indisponibles', __FILE__);
            }
        } catch (Exception $exc) {
            log::add('horoscope', 'error', __('Erreur pour la récupération des données pour l\'horoscope du jour sur le site internet pour', __FILE__) . ' ' . $name . ' : ' . $exc->getMessage());
        }
        log::add('horoscope', 'debug', '│└─────────');
    }

    if ($horo_type == 'astro_hebdo' || $horo_type == 'astro_jour_hebdo') {
        $horoscope = self::getHoroscopeForSigne_Hebdo($signe_zodiaque, $name, $horoscope);
    }

    return $horoscope;
}

et dans la fonction getHoroscopeForSigne_hebdo :

$options = \[
    'http' => \[
        'method' => 'GET',
        'header' => "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36\\r\\n"
    \]
\];

Je vous laisse valider. Après quelques tests rapides, ça fonctionne correctement chez moi.

:play_button: Autre détail :
j’avais des erreurs sur la récupération de l’image par défaut qui n’existe pas dans l’arborescence du plugin. Il faudrait donc la rajouter.

/plugins/horoscope/core/img/default.png 404 (Not Found)

2 « J'aime »

Salut

J’ai traité déjà ce point se sera dispo dans la bêta de demain

Si j’ai le temps ce soir je regarderai l autre point
Merci en tout cas
Bonne journée

1 « J'aime »

J’ai publié cela en beta, j’ai juste mis en erreur au lieu de debug quand il y a un soucis sur le site

if ($html === FALSE) {
                log::add('horoscope', 'error', '││:fg-danger:' . __('Erreur de chargement du site Astroo', __FILE__) . ':/fg:');
                return false;
            }

cela permettra d’avoir un message dans le centre des messages

1 « J'aime »

Je viens de publier la version stable

Je pense que l’on peut clôturer le sujet

Merci de ton retour

1 « J'aime »

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.