Partage
  • Partager sur Facebook
  • Partager sur Twitter

Demande aide pour modification code

permettant d'afficher la météo

    2 décembre 2005 à 21:14:14

    Bonsoir à tous.

    Je continu toujours mes recherche pour afficher les derniers relevés meteo sur mon site. On m'a donner un script avec plusieurs fichier, mais on m'as dit que c'etait un pluggins pour dotclear, et que si je voulait pouvoir l'afficher sur mon site php il fallait y faire des modifications. Je demande donc votre aide pour modifer ce fichier si possible , me permettant de faire cela.

    Voilà le fichier principal. Du moins je pense que c'est celui là.


    <?php
    # ***** BEGIN LICENSE BLOCK *****
    # This file is part of DotClear.
    # Copyright (c) 2004 Olivier Meunier and contributors. All rights
    # reserved.
    #
    # DotClear is free software; you can redistribute it and/or modify
    # it under the terms of the GNU General Public License as published by
    # the Free Software Foundation; either version 2 of the License, or
    # (at your option) any later version.
    #
    # DotClear is distributed in the hope that it will be useful,
    # but WITHOUT ANY WARRANTY; without even the implied warranty of
    # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    # GNU General Public License for more details.
    #
    # You should have received a copy of the GNU General Public License
    # along with DotClear; if not, write to the Free Software
    # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    #
    # ***** END LICENSE BLOCK *****

    class dcWeather
    {
            /* fonction d'admin : copie les fichiers necessaires dans share */
            function installToShare($plugin_name,$dir)
            {
                    $install_dir = dirname(__FILE__).'/_install';
                    $plugin_share_dir = DC_SHARE_DIR.'/'.$plugin_name;
                   
                    if (!is_dir($plugin_share_dir))
                    {
                            @umask(000);
                            @mkdir($plugin_share_dir, 0777);
                    }
                   
                    if (is_writable($plugin_share_dir))
                    {
                            $d = dir($dir);
                            while (false !== ($entry = $d->read()))
                            {
                                    if ( $entry == '.' || $entry == '..' ) continue;
                                   
                                    $src = $d->path.'/'.$entry;
                                    $dest = str_replace($install_dir,$plugin_share_dir,$src);
                                   
                                    if( is_dir($src) )
                                    {
                                            @umask(000);
                                            @mkdir($dest, 0777);
                                            $entry = dcWeather::installToShare($plugin_name,$src);
                                    }
                                    else
                                    {
                                            @copy ($src, $dest);
                                    }
                            }
                            $d->close();
                    }
            }
           
            /* fonction d'admin : retourne le resultat de la recherche dans un tableau */
            function search2array ($city='Paris')
            {
                    $file = 'http://xoap.weather.com/search/search?where='.rawurlencode($city);
                   
                    $data = @implode('',@file($file));
                   
                    preg_match_all("|<loc id=\"(.*)\".*>(.*)</loc>|U",$data,$cities);
                    $_cities = array();
                    foreach ($cities[1] as $c => $v)
                    {
                            $_cities[trim($cities[2][$c])] = trim($v);
                    }
                    return $_cities;
            }
           
           
            /* fonction parse le fichier xml */
            function xmlToArray($file, $units='m')
            {

                    if (defined('DC_LANG')) {
                            if (dc_encoding == 'UTF-8') {
                                    l10n::set(dirname(__FILE__).'/l10n/'.DC_LANG.'-utf8/weather');
                            } else {
                                    l10n::set(dirname(__FILE__).'/l10n/'.DC_LANG.'/weather');
                            }
                    }

                    $xml_parser = xml_parser_create();
                   
                    if ( $data = @implode('',@file($file)) )
                    {
                            xml_parse_into_struct($xml_parser, $data, $vals, $index);
                            xml_parser_free($xml_parser);
                           
                            $params = array();
                            $level = array();
                            foreach ($vals as $xml_elem)
                            {
                                    if ($xml_elem['type'] == 'open')
                                    {
                                            $level[$xml_elem['level']] = strtoupper($xml_elem['tag']);
                                    }
                                   
                                    if ($xml_elem['type'] == 'complete')
                                    {
                                            $start_level = 2;
                                            $php_stmt = '$params[';
                                            while($start_level < $xml_elem['level'])
                                            {
                                                    $php_stmt .= '$level['.$start_level.'].';
                                                    $start_level++;
                                            }
                                            $php_stmt .= 'strtoupper($xml_elem[\'tag\'])] = $xml_elem[\'value\'];';
                                            eval($php_stmt);
                                    }
                            }
                            $result = array();
                            foreach ($params as $key => $value)
                            {
                                    switch ($key)
                                    {
                                            case 'LOCDNAM':
                                                    $result['w'.$key] = ($value != "N/A") ? htmlspecialchars($value) : false;
                                                    $result['wLOCCITY'] = substr($value,0,strpos($value,','));
                                                    $result['wLOCSTAT'] = substr($value,strpos($value,',')+2);
                                                    break;
                                            case 'LOCTM':
                                            case 'LOCSUNR':
                                            case 'LOCSUNS':
                                            case 'CCLSUP':
                                                    $result['w'.$key] = strtotime(str_replace(' Local Time','',$value));
                                                    break;
                                            case 'CCT':
                                            case 'CCBARD':
                                            case 'CCWINDT':
                                            case 'CCUVT':
                                            case 'CCMOONT':
                                                    $result['o'.$key] = $value;
                                                    $result['w'.$key] = htmlspecialchars(__($value));
                                                    break;
                                            case 'HEADUT': // °C / °F
                                            case 'HEADUD': // mi / km       
                                            case 'HEADUS': // mph / km/h
                                            case 'HEADUP': // in / mb
                                            case 'HEADUR': // in / mm
                                            case 'HEADLOCALE':
                                            case 'HEADFORM':
                                            case 'CCOBST':
                                                    break;
                                            case 'CCICON':
                                                    $result['wCCICON'] = ($value == '-') ? '36' : $value;
                                                    break;
                                            case 'CCTMP':
                                                    $result['wCCTMPF'] = floor(($value*9/5)+33);
                                                    $result['wCCTMPC'] = $value;
                                                    break;
                                            case 'CCBARR':
                                                    $result['wCCBARRIN'] = floor(str_replace(array('.',','),'',$value) / 3.386) / 100 ;
                                                    $result['wCCBARRMB'] = $value;
                                                    break;
                                            case 'CCVIS':
                                            case 'CCWINDS':
                                                    $result['w'.$key.'KM'] = $value;
                                                    $result['w'.$key.'MI'] = floor($value / 0.16) / 10;
                                                    break;
                                            default:
                                                    $result['w'.$key] = ($value != "N/A") ? htmlspecialchars($value) : false;
                                                    break;
                                    }
                            }
                            return $result;
                    }
                    else
                    {
                            return false;
                    }
            }
           
            /* fonction download et ecrit le fichier xml météo */
            function writeData($code)
            {
                    $file = 'http://xoap.weather.com/weather/local/'.$code.'?cc=*&unit=m';
                   
                    if ( $data = @implode('',@file($file)) )
                    {
                            if ($out = @fopen (DC_SHARE_DIR.'/weather/codes/'.$code.'.xml','w'))
                            {
                                    @fwrite($out, $data);
                                    @fclose($out);
                            }
                    }
            }
           
            /* fonction retourne un tableau de données météo */
            function getData($code)
            {
                    $file = DC_SHARE_DIR.'/weather/codes/'.$code.'.xml';
                   
                    $arr_data = array();
                   
                    if (file_exists($file) && (filemtime($file) + 3600) > time())
                    {
                            $arr_data = dcWeather::xmlToArray($file);
                    }
                    else
                    {
                            dcWeather::writeData($code);
                            if (file_exists($file))
                            {
                                    $arr_data = dcWeather::xmlToArray($file);
                                    if ( dc_http_cache == 1 ) files::touch(DC_UPDATE_FILE);
                            }
                    }
                    return $arr_data;
            }
           
            /* Will expand given string, replacing special variables with their value */
            function expand($data, $tmpl, $theme='', $uid='')
            {
                    $evalstr = '$wTHEME=\'' . $theme . '\'; $wUID=\'' . $uid .'\'; ';
                    $evalstr .= '$wAPPURL=\''. dc_app_url . '\'; ';
                    foreach ($data as $var => $value)
                    {
                            $evalstr .= '$' . $var . '=\'' . $value . '\'; ';
                    }
                    if ($tmpl == '-')
                    {
                            $tmpl = "<ul>\n";
                            foreach ($data as $var => $value)
                            {
                                    $tmpl .= '<li>\$' . $var . '=\'$' . $var . '\'</li>' . "\n";
                            }
                            $tmpl .= "</ul>\n";
                    }
                    $evalstr .= '$result="' . $tmpl . '";';
                    eval ($evalstr);
                    return $result;
            }
                                                                                                                                                                                                                                                                      
            /* fonction d'affichage */
            function weatherList($cities = array(), $theme = false, $template = false)
            {
                    if( file_exists(DC_SHARE_DIR.'/weather/weather.ini') )
                    {
                            $dc_weather_ini_file = DC_SHARE_DIR.'/weather/weather.ini';
                            iniFile::read($dc_weather_ini_file);
                           
                            if (!$theme)
                            {
                                    $theme = dc_weather_theme;
                            }
                            if (is_array($cities) && count($cities))
                            {
                                    $decoded_cities = array();
                                    foreach ($cities as $city)
                                    {
                                            $decoded_cities[$city] = $city;
                                    }
                            }
                            else
                            {
                                    $decoded_cities = (dc_weather_encoded == '' ? array() : unserialize(base64_decode(dc_weather_encoded)) );
                            }
                            if ($template)
                            {
                                    if( strstr($template, '</LOOP>') )
                                            $tmpl = preg_split("/<\/?LOOP>/", $template);
                                    else
                                            $tmpl = preg_split("/<\/?LOOP>/",@implode('',@file(DC_SHARE_DIR.'/weather/tmpl/'.$template)));
                            }
                            else
                            {
                                    $tmpl = preg_split("/<\/?LOOP>/",@implode('',@file(DC_SHARE_DIR.'/weather/tmpl/default.tmpl')));
                            }
                            for ($i=0; $i<count($tmpl);$i++)
                            {
                                    $tmpl[$i] = str_replace( array('"','[[',']]'), array('\"', '".', '."'), $tmpl[$i]);
                            }
                           
                            $uid = rand(1,10000);   // gruick, mais ça marche ;)
                            for ($i=0; $i<count($tmpl);$i++)
                            {
                                    if ($i % 2)
                                    {
                                            foreach (array_flip($decoded_cities) as $code)
                                            {
                                                    $data = dcWeather::getData($code);
                                                    if (!empty($data))
                                                    {
                                                            print dcWeather::expand($data, $tmpl[$i], $theme, $uid);
                                                            $uid++;
                                                    }
                                            }
                                    }
                                    else
                                    {
                                            print dcWeather::expand(array(), $tmpl[$i], $theme, '');
                                    }
                            }
                    }
            }
    }
    ?>
    • Partager sur Facebook
    • Partager sur Twitter
      2 décembre 2005 à 22:36:41

      Petite question pour toi,

      c'est pour quelle ville que tu veux afficher la meteo????

      @+++
      • Partager sur Facebook
      • Partager sur Twitter
        3 décembre 2005 à 6:51:01

        Citation : S@m

        Petite question pour toi,

        c'est pour quelle ville que tu veux afficher la meteo????

        @+++




        Pour Paris par exemple, mais je compte le faire pour d'autre ensuite.
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          3 décembre 2005 à 7:09:25

          Elles viennent d'où les données ? :euh:
          • Partager sur Facebook
          • Partager sur Twitter
            3 décembre 2005 à 8:39:47

            Citation : Tonio 76

            Elles viennent d'où les données ? :euh:


            "Empruntées" sur un autre site tiens ! :-°
            • Partager sur Facebook
            • Partager sur Twitter
              3 décembre 2005 à 13:47:42

              Citation : Bison

              Citation : Tonio 76

              Elles viennent d'où les données ? :euh:


              "Empruntées" sur un autre site tiens ! :-°




              et bien oui , comme tous les autres sites météo bien sur.
              • Partager sur Facebook
              • Partager sur Twitter

              Demande aide pour modification code

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown