Lancer chaque seconde une fonction définie dans le fichier template.php

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

J'utilise le module worlclock afin d'afficher sur mon site des horloges avec l'indication du temps dans diifférents pays. Grâce au ficher template.php j'ai pu réecrire la fonction de ce module permettant d'afficher les données.

Ainsi à la place d'avoir des données tabulaires, j'ai pu utiliser un fichier swf, qui grâce aux différents paramètres d'entrée définis dans la fonction, permet d'afficher des horloges qui indiquent l'heure dans ces pays.

Le résultat souhaité est correcte, mais je souhaiterai que cette fonction "mytheme_clocks_list()" soit rechargèe toutes les secondes afin que l'affichage soit remis à jour continuellement.

Pourriez-vous me dire comment procéder pour faire ceci: Etant débutant avec Drupal, je ne sais pas si ce que je souhaite faire est faisable. Je suppose qu'il faut un évènement onload mais ne sait pas comment le placer.

Voici le code de mon fichier template.php:

function mytheme_clocks_list($worldclock_location, $maxnum, $showzebra, $timestr, $footnote){

    // Verify the GMT - Summer hour or Wnter hour
    $timezone=$timezones['Netherlands'];
    $locationTime = time();
    $GMT=date('O',$locationTime);

    if ($GMT=='+0200') {
        $decallage=2;
    }else{
    $decallage=1;              
    }

    $output = '';

    $locationReplacement = Array(
        'from' => Array(
            'Russia Moscow', 'USA PT', 'USA ET', 'Netherlands', 'Czech Republic', 'UAE', 'India', 'Thailand', 'China', 'Malaysia', 'Japan', 'Australia ET'
        ),
        'to' => Array(
            'Moscow', 'California', 'Pittsburg', 'Luxembourg', 'Praha', 'Dubai', 'New Delhi', 'Bangkok', 'Shanghai', 'Singapore', 'Tokyo', 'Sydney'
        ),
    );

    $timezones = Array(
        'Afghanistan' => 'Asia/Kabul',
        'Argentina' => 'America/Argentina/Buenos_Aires',
        'Australia ET' => 'Australia/Sydney',
        'Australia CT' => 'Australia/Adelaide',
        'Australia WT' => 'Australia/Perth',
        'Austria' => 'Australia/Perth',
        'Bangladesh' => 'Asia/Dhaka',
        'Belgium' => 'Europe/Brussels',
        'Bhutan' => 'Asia/Thimphu',
        'Bolivia' => 'America/La_Paz',
        'Brazil' => 'America/Sao_Paulo',
        'Bulgaria' => 'Europe/Sofia',
        'Cambodia' => 'Asia/Phnom_Penh',
        'Cameroon' => 'Africa/Douala',
        'Canada AB' => 'America/Edmonton',
        'Canada BC' => 'America/Whitehorse',
        'Canada MB' => 'America/Winnipeg',
        'Canada NB' => 'America/Montreal',
        'Canada NF' => 'America/St_Johns',
        'Canada NT' => 'America/Edmonton',
        'Canada NS' => 'America/Goose_Bay',
        'Canada NU(M)' => 'America/Montreal',
        'Canada NU(C)' => 'America/Montreal',
        'Canada NU(E)' => 'America/Montreal',
        'Canada ON(E)' => 'America/Montreal',
        'Canada ON(W)' => 'America/Montreal',
        'Canada PE' => 'America/St_Johns',
        'Canada QC' => 'America/Montreal',
        'Canada QC(E)' => 'America/Montreal',
        'Canada SK' => 'America/Winnipeg',
        'Canada SK(L)' => 'America/Winnipeg',
        'Canada YK' => 'America/Whitehorse',
        'Chile' => 'America/Santiago',
        'China' => 'Asia/Chongqing',
        'Christmas Islands' => 'Indian/Christmas',
        'Colombia' => 'America/Bogota',
        'Cook Islands' => 'Pacific/Rarotonga',
        'Costa Rica' => 'America/Costa_Rica',
        'Croatia' => 'Europe/Zagreb',
        'Czech Republic' => 'Europe/Prague',
        'Denmark' => 'Europe/Copenhagen',
        'Ecuador' => 'America/Guayaquil',
        'Egypt' => 'Africa/Cairo',
        'Ethiopia' => 'Africa/Addis_Ababa',
        'Fiji' => 'Pacific/Fiji',
        'Finland' => 'Europe/Helsinki',
        'France' => 'Europe/Paris',
        'Germany' => 'Europe/Berlin',
        'Ghana' => 'Africa/Accra',
        'Greece' => 'Europe/Athens',
        'Hungary' => 'Europe/Budapest',
        'Iceland' => 'Atlantic/Reykjavik',
        'India' => 'Asia/Kolkata',
        'Iran' => 'Asia/Tehran',
        'Iraq' => 'Asia/Baghdad',
        'Israel' => 'Asia/Jerusalem',
        'Italy' => 'Europe/Rome',
        'Japan' => 'Asia/Tokyo',
        'Jordan' => 'Asia/Amman',
        'Kenya' => 'Africa/Nairobi',
        'Korea' => 'Asia/Seoul',
        'Laos' => 'Asia/Vientiane',
        'Libya' => 'Africa/Tripoli',
        'Madagascar' => 'Indian/Antananarivo',
        'Malaysia' => 'Asia/Kuala_Lumpur',
        'Marshall Islands' => 'Pacific/Majuro',
        'Mauritius' => 'Indian/Mauritius',
        'Monaco' => 'Europe/Monaco',
        'Mongolia' => 'Asia/Ulaanbaatar',
        'Morocco' => 'Africa/Casablanca',
        'Myanmar' => 'Asia/Rangoon',
        'Nepal' => 'Asia/Kathmandu',
        'Netherlands' => 'Europe/Amsterdam',
        'New Caledonia' => 'Pacific/Noumea',
        'New Zealand' => 'Pacific/Auckland',
        'Nigeria' => 'Africa/Lagos',
        'Norway' => 'Europe/Oslo',
        'Oman' => 'Asia/Muscat',
        'Pakistan' => 'Asia/Karachi',
        'Palau' => 'Pacific/Palau',
        'Panama' => 'America/Panama',
        'Papau New Guinea' => 'Pacific/Port_Moresby',
        'Peru' => 'America/Lima',
        'Philippines' => 'Asia/Manila',
        'Poland' => 'Europe/Warsaw',
        'Portugal' => 'Europe/Lisbon',
        'Romania' => 'Europe/Bucharest',
        'Rwanda' => 'Africa/Kigali',
        'Russia Moscow' => 'Europe/Moscow',
        'Samoa' => 'Pacific/Pago_Pago',
        'Saudi Arabia' => 'Asia/Riyadh',
        'Senegal' => 'Africa/Dakar',
        'Seychells' => 'Indian/Mahe',
        'Singapore' => 'Asia/Singapore',
        'Solomon Islands' => 'Pacific/Guadalcanal',
        'South Africa' => 'Africa/Johannesburg',
        'Spain' => 'Europe/Madrid',
        'Sudan' => 'Africa/Khartoum',
        'Sweden' => 'Europe/Stockholm',
        'Switzerland' => 'Europe/Zurich',
        'Taiwan' => 'Asia/Taipei',
        'Thailand' => 'Asia/Bangkok',
        'Tonga' => 'Pacific/Tongatapu',
        'Turkey' => 'Europe/Istanbul',
        'UAE' => 'Asia/Dubai',
        'UK' => 'Europe/London',
        'USA Alaska' => 'America/Anchorage',
        'USA Hawaii' => 'Pacific/Honolulu',
        'USA PT' => 'America/Los_Angeles',
        'USA MT' => 'America/Denver',
        'USA CT' => 'America/Chicago',
        'USA ET' => 'America/New_York',
        'Vanuatu' => 'Pacific/Efate',
        'Venezuela' => 'America/Caracas',
        'Vietnam' => 'Asia/Ho_Chi_Minh',
        'Zambia' => 'Africa/Lusaka',
        );

    $output .= '<table id="wordclock">';
    $output .= '<tr>';

    for ($i = 1; $i <= $maxnum; $i++){
        $extraClass = '';

        if ($showzebra){
            if ($i % 2) $extraClass = ' odd';
            else $extraClass = ' even';
        }

        $loc_no = variable_get('worldclock_location'. $i, 0);

        if ($loc_no > 0){
            $loc = $_worldclock_location[$loc_no];
            $loc_name  = $loc[INDEX_NAME];

            $timezone = $timezones[$loc_name];

            date_default_timezone_set($timezone);

            $locationTime = time();

            $offset = date('h', $locationTime) * 60 + date('i', $locationTime);
            $ampm = date('A', $locationTime);

            $real_offset = (date('Z', $locationTime)/3600) - $decallage ;

            if ($real_offset>0){
                $real_offset_final = "$real_offset";
                $real_offset = "&#43;$real_offset_final";
            }

            $loc_name = str_replace($locationReplacement['from'], $locationReplacement['to'], $loc_name);

            $hour=date('H') . ':'  . date('i') . ':'  . date('s');

            $clock = getClock($loc_name, $offset, $ampm, date('m'), date('d'), $hour, $real_offset);

            $output .= '<td class="' . $extraClass . '">' . $clock . '<span id="worldclock'. $i .'" style="display:none;"></span></td>';

        }
    }

    $output .= '</tr>';
    $output .= '</table>';

    if ($footnote){
        $output .= '<span id="worldclock_footnote">'. $footnote .'</span>';
    }
    return $output;
}

function getClock($location, $offset, $ampm, $month, $day, $hour, $real_offset){
    global $base_url;

    $ret = '';

    $serverTime = 0;
    $location = urlencode($location);

    $ret = '
        <div id="flashContent">
        <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="72" height="100" id="clock_system" align="middle" onMouse>
            <param name="movie" value="' . $base_url . '/sites/all/themes/rotarex/flash/clock_system.swf" />
            <param name="flashvars" value="serverTime=' . $serverTime . '&location=' . $location . '&offset=' . $offset . '&mm_dd=' . $real_offset . 'h<br><br>' . $hour . '&&am_pm=' . $ampm . '" />
            <param name="quality" value="high" />
            <param name="bgcolor" value="#ffffff" />
            <param name="play" value="true" />
            <param name="loop" value="true" />
            <param name="wmode" value="transparent" />
            <param name="scale" value="showall" />
            <param name="menu" value="true" />
            <param name="devicefont" value="false" />
            <param name="salign" value="" />
            <param name="allowScriptAccess" value="sameDomain" />
            <!--[if !IE]>-->
            <object type="application/x-shockwave-flash" data="' . $base_url . '/sites/all/themes/rotarex/flash/clock_system.swf" width="72" height="100">
                <param name="movie" value="' . $base_url . '/sites/all/themes/rotarex/flash/clock_system.swf" />
                <param name="flashvars" value="serverTime=' . $serverTime . '&location=' . $location . '&offset=' . $offset . '&mm_dd=' . $real_offset . 'h<br><br>' . $hour . '&&am_pm=' . $ampm . '" />
                <param name="quality" value="high" />
                <param name="bgcolor" value="#ffffff" />
                <param name="play" value="true" />
                <param name="loop" value="true" />
                <param name="wmode" value="transparent" />
                <param name="scale" value="showall" />
                <param name="menu" value="true" />
                <param name="devicefont" value="false" />
                <param name="salign" value="" />
                <param name="allowScriptAccess" value="sameDomain" />
            <!--<![endif]-->
                <a href="http://www.adobe.com/go/getflash">
                    <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
                </a>
            <!--[if !IE]>-->
            </object>
            <!--<![endif]-->
        </object>
        </div>
    ';

    return $ret;
}

Merci d'avance pour votre aide,

Seb

Forum : 
Version de Drupal :