2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-03 04:36:36 +00:00

new command reload for 57_Calendar.pm forces cleanup

git-svn-id: https://svn.fhem.de/fhem/trunk@5453 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
borisneubert 2014-04-06 06:55:44 +00:00
parent 047fa6a9f6
commit 7a0d399f31
2 changed files with 23 additions and 12 deletions

View File

@ -1,6 +1,7 @@
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
# Do not insert empty lines here, update check depends on it.
- SVN
- feature: new command reload for 57_Calendar.pm forces cleanup
- changed: small update to the documentation of recurring events in
57_Calendar.pm
- bugfix: PRESENCE: fixing wrong presence state for mode lan-ping

View File

@ -653,14 +653,14 @@ sub deleteEvent {
# }
sub updateFromCalendar {
my ($self,$calendar)= @_;
my ($self,$calendar,$removeall)= @_;
my $t= time();
my $uid;
my $event;
# we first remove all elements which were previously marked for deletion
foreach $event ($self->events()) {
if($event->isDeleted()) {
if($event->isDeleted() || $removeall) {
$self->deleteEvent($event->uid());
}
}
@ -723,15 +723,16 @@ sub Calendar_Initialize($) {
$hash->{AttrList}= $readingFnAttributes;
}
###################################
sub Calendar_Wakeup($) {
my ($hash) = @_;
###################################
sub Calendar_Wakeup($$) {
my ($hash,$removeall) = @_;
my $t= time();
Log3 $hash, 4, "Calendar " . $hash->{NAME} . ": Wakeup";
Calendar_GetUpdate($hash) if($t>= $hash->{fhem}{nxtUpdtTs});
Calendar_GetUpdate($hash,$removeall) if($t>= $hash->{fhem}{nxtUpdtTs});
$hash->{fhem}{lastChkTs}= $t;
$hash->{fhem}{lastCheck}= FmtDateTime($t);
@ -809,9 +810,9 @@ sub Calendar_CheckTimes($) {
###################################
sub Calendar_GetUpdate($) {
sub Calendar_GetUpdate($$) {
my ($hash) = @_;
my ($hash,$removeall) = @_;
my $t= time();
$hash->{fhem}{lstUpdtTs}= $t;
@ -881,7 +882,7 @@ sub Calendar_GetUpdate($) {
# we now create the events from it
#main::Debug "Creating events...";
my $eventsObj= $hash->{fhem}{events};
$eventsObj->updateFromCalendar($root);
$eventsObj->updateFromCalendar($root,$removeall);
$hash->{fhem}{events}= $eventsObj;
# we now update the readings
@ -916,10 +917,14 @@ sub Calendar_Set($@) {
# usage check
if((@a == 2) && ($a[1] eq "update")) {
$hash->{fhem}{nxtUpdtTs}= 0; # force update
Calendar_Wakeup($hash);
Calendar_Wakeup($hash,0);
return undef;
} elsif((@a == 2) && ($a[1] eq "reload")) {
$hash->{fhem}{nxtUpdtTs}= 0; # force update
Calendar_Wakeup($hash,1); # remove all events before update
return undef;
} else {
return "Unknown argument $cmd, choose one of update:noArg";
return "Unknown argument $cmd, choose one of update:noArg reload:noArg";
}
}
@ -1013,7 +1018,7 @@ sub Calendar_Define($$) {
#main::Debug "Interval: ${interval}s";
$hash->{fhem}{nxtUpdtTs}= 0;
Calendar_Wakeup($hash);
Calendar_Wakeup($hash,0);
return undef;
}
@ -1085,6 +1090,11 @@ sub Calendar_Undef($$) {
Forces the retrieval of the calendar from the URL. The next automatic retrieval is scheduled to occur
<code>interval</code> seconds later.<br><br>
<code>set &lt;name&gt; reload</code><br><br>
Same as <code>update</code> but all calendar events are removed first.<br><br>
</ul>
<br>