コード例 #1
0
ファイル: sync_nlc.php プロジェクト: YakovAngel/liquid-galaxy
function createNLC($kml_data_file, $connection_timeout = 60)
{
    $client_timestamp = getOrDefault('t', 0);
    $client_kmls = getOrDefault('client_kmls', '');
    if ($client_kmls != '') {
        $client_kml_list = array_fill_keys(explode(',', $client_kmls), '');
    } else {
        $client_kml_list = array();
    }
    #keep connection alive for $connection_timeout seconds
    $start = microtime(true);
    set_time_limit($connection_timeout + 1);
    $new_data = False;
    for ($i = 0; $i < $connection_timeout; $i += 1) {
        clearstatcache();
        $file_mod = filemtime($kml_data_file);
        echo "<!--" . $file_mod . "-->\n";
        if ($file_mod > $client_timestamp) {
            $add_del_keep = getSyncLists($client_kml_list, $kml_data_file);
            $kml = makeNLCUpdate($add_del_keep[0], $add_del_keep[1], $add_del_keep[2], $file_mod, $connection_timeout);
            outputKML($kml);
            $new_data = True;
            echo "</kml>";
            exit(0);
            #need to break the loop.
            $i = $connection_timeout;
        }
        time_sleep_until($start + $i + 1);
    }
    #Make sure to provide the cookie if no changes detected. Else NL loses cookie and dup. features
    if (!$new_data) {
        $kml = "\n  <NetworkLinkControl>\n    <minRefreshPeriod>1</minRefreshPeriod>\n    <maxSessionLength>-1</maxSessionLength>\n    <cookie><![CDATA[t=%s&client_kmls=%s]]></cookie> \n  </NetworkLinkControl>\n";
        echo sprintf($kml, $client_timestamp, $client_kmls);
    }
}
コード例 #2
0
function syncTouchscreenChoices($kml_data_file)
{
    $touch_kml = trim(getOrDefault('touch_kml', ''));
    $touch_action = getOrDefault('touch_action', '');
    $kml_url_list = getKmlListUrls($kml_data_file);
    # If delete action, remove element from array
    if ($touch_action == 'delete' && in_array($touch_kml, $kml_url_list)) {
        $index = array_search($touch_kml, $kml_url_list);
        unset($kml_url_list[$index]);
        writeKmlListFile($kml_data_file, $kml_url_list);
    } else {
        if ($touch_action == 'add' && !in_array($touch_kml, $kml_url_list)) {
            $kml_url_list[md5($touch_kml)] = $touch_kml;
            writeKmlListFile($kml_data_file, $kml_url_list);
        }
    }
}