]> granicus.if.org Git - icinga2/commitdiff
ido: Fix timeperiods with more than one segment.
authorGunnar Beutner <gunnar.beutner@netways.de>
Mon, 9 Sep 2013 13:54:19 +0000 (15:54 +0200)
committerGunnar Beutner <gunnar.beutner@netways.de>
Mon, 9 Sep 2013 13:54:19 +0000 (15:54 +0200)
lib/ido/timeperioddbobject.cpp

index 28f9f9d44dd5ceed8abb1757ec2b015f63939d4f..9037305ea4f0878585e50a69d2601ac88d4a7439 100644 (file)
@@ -97,18 +97,24 @@ void TimePeriodDbObject::OnConfigUpdate(void)
                }
 #endif /* _MSC_VER */
 
-               tm begin, end;
-               LegacyTimePeriod::ProcessTimeRangeRaw(value, &reference, &begin, &end);
-
-               DbQuery query;
-               query.Table = GetType()->GetTable() + "_timeranges";
-               query.Type = DbQueryInsert;
-               query.Fields = boost::make_shared<Dictionary>();
-               query.Fields->Set("instance_id", 0); /* DbConnection class fills in real ID */
-               query.Fields->Set("timeperiod_id", DbValue::FromObjectInsertID(tp));
-               query.Fields->Set("day", wday);
-               query.Fields->Set("start_sec", begin.tm_hour * 3600 + begin.tm_min * 60 + begin.tm_sec);
-               query.Fields->Set("end_sec", end.tm_hour * 3600 + end.tm_min * 60 + end.tm_sec);
-               OnQuery(query);
+               Array::Ptr segments = boost::make_shared<Array>();
+               LegacyTimePeriod::ProcessTimeRanges(value, &reference, segments);
+
+               BOOST_FOREACH(const Value& vsegment, segments) {
+                       Dictionary::Ptr segment = vsegment;
+                       int begin = segment->Get("begin");
+                       int end = segment->Get("end");
+
+                       DbQuery query;
+                       query.Table = GetType()->GetTable() + "_timeranges";
+                       query.Type = DbQueryInsert;
+                       query.Fields = boost::make_shared<Dictionary>();
+                       query.Fields->Set("instance_id", 0); /* DbConnection class fills in real ID */
+                       query.Fields->Set("timeperiod_id", DbValue::FromObjectInsertID(tp));
+                       query.Fields->Set("day", wday);
+                       query.Fields->Set("start_sec", begin % 86400);
+                       query.Fields->Set("end_sec", end % 86400);
+                       OnQuery(query);
+               }
        }
 }