function generate()
 {
     global $program_sheets;
     $program_list = get_program_list_from_gdoc($program_sheets['program']);
     $program_types_list = get_program_types_from_gdoc($program_sheets['type']);
     $program_rooms_list = get_program_rooms_from_gdoc($program_sheets['room']);
     $program_community_list = get_program_community_from_gdoc($program_sheets['community']);
     if ($program_list && $program_types_list && $program_rooms_list && $program_community_list) {
         $program_list_html = get_program_list_html($program_list, $program_types_list, $program_rooms_list, $program_community_list, 'zh-tw');
         // Marksite template reads content from $transformed
         $transformed = $program_list_html['program'];
         $transformed .= "\n";
         $transformed .= '<div id="lock_background">' . "\n";
         $transformed .= '  <div id="program_detail" class="program"></div>' . "\n";
         $transformed .= '</div>' . "\n";
         $transformed .= "\n";
         $title = "Program";
         $home_path = MARKSITE_ABSOLUTE_PATH;
         $this->current = array('', 'program');
         ob_start();
         include THEME_PATH . MARKSITE_PATH . "page.php";
         $output = ob_get_contents();
         ob_end_clean();
         print $output;
     } else {
         print "<p>Can't fetch data from google doc</p>\n";
     }
 }
function write_program_files($program_sheets, $program_list_output, $json_output)
{
    $program_list = get_program_list_from_gdoc($program_sheets['program']);
    $program_types_list = get_program_types_from_gdoc($program_sheets['type']);
    $program_rooms_list = get_program_rooms_from_gdoc($program_sheets['room']);
    $program_community_list = get_program_community_from_gdoc($program_sheets['community']);
    if ($program_list === FALSE || $program_types_list === FALSE || $program_rooms_list === FALSE || $program_community_list === FALSE) {
        print "Notice: skip Program list from Google Docs.\n";
    } else {
        foreach ($program_list_output as $type => $l10n) {
            foreach ($l10n as $lang => $path) {
                $program_list_html = get_program_list_html($program_list, $program_types_list, $program_rooms_list, $program_community_list, $lang);
                print "Write program into " . $path . " .\n";
                $fp = fopen($path, "w");
                fwrite($fp, $program_list_html[$type]);
                fwrite($fp, '<div id="lock_background"><div id="program_detail" class="program"></div></div>');
                fclose($fp);
            }
        }
        print "Write program into " . $json_output["program"] . " .\n";
        $fp = fopen($json_output["program"], "w");
        fwrite($fp, json_encode(array('program' => $program_list, 'type' => $program_types_list, 'room' => $program_rooms_list, 'community' => $program_community_list)));
        fclose($fp);
    }
}