//
// aegis - project change supervisor
// Copyright (C) 2005 Matthew Lee
// Copyright (C) 2008 Peter Miller
//
// This program 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 3 of the License, or
// (at your option) any later version.
//
// This program 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 this program. If not, see
// .
//
#include
#include
#include
#include
#include
xml_node_rss_timedate::~xml_node_rss_timedate()
{
}
xml_node_rss_timedate::xml_node_rss_timedate(xml_text_reader_by_node &reader,
output::pointer out, bool use_current_time) :
xml_node_rss(reader, out),
set_current_time(use_current_time)
{
if (use_current_time)
{
reader.register_node_handler("rss/channel/lastBuildDate", *this);
}
else
{
reader.register_node_handler("rss/channel/pubDate", *this);
}
// The timedate handler will always be called after some of the parent
// classes handlers -- that's dictated by the structure of RSS feed files.
// So we can safely set xml_version_printed to true, so we don't go
// printing it again prior to any datetime elements.
xml_version_printed = true;
}
xml_node_rss_timedate::xml_node_rss_timedate(
const xml_node_rss_timedate &arg) :
xml_node_rss(arg),
set_current_time(arg.set_current_time)
{
xml_version_printed = true;
}
void
xml_node_rss_timedate::text(const nstring &value)
{
terminate_element_begin();
if (value.empty())
{
// We don't care what the value of the date/time string is.
// Just write out either the current date/time or just after
// midnight on the current date.
time_t time_string = now();
if (!set_current_time)
{
time_t early_this_morning =
time_string - (time_t)(time_string % 86400) + 1;
time_string = early_this_morning;
}
deeper->fputs(date_string(time_string));
}
else
deeper->fputs_xml(value);
}