wiki-archive/twiki/lib/TWiki/Contrib/MailerContrib/UpData.pm

72 lines
1.9 KiB
Perl

# Module of TWiki Enterprise Collaboration Platform, http://TWiki.org/
#
# Copyright (C) 2004 Wind River Systems Inc.
# Copyright (C) 1999-2006 TWiki Contributors.
# All Rights Reserved. TWiki Contributors
# are listed in the AUTHORS file in the root of this distribution.
# NOTE: Please extend that file, not this notice.
#
# 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 2
# of the License, or (at your option) any later version. For
# more details read LICENSE in the root of this distribution.
#
# 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.
#
# As per the GPL, removal of this notice is prohibited.
use strict;
=pod
---+ package TWiki::Contrib::MailerContrib::UpData
Object that lazy-scans topics to extract
parent relationships.
=cut
package TWiki::Contrib::MailerContrib::UpData;
=pod
---++ ClassMethod new($web)
* =$web= - Web we are building parent relationships for
Constructor for a web; initially empty, will lazy-load as topics
are referenced.
=cut
sub new {
my ( $class, $session, $web ) = @_;
my $this = bless( {}, $class );
$this->{web} = $web;
$this->{session} = $session;
return $this;
}
=pod
---++ ObjectMethod getParent($topic) -> string
Get the name of the parent topic of the given topic
=cut
sub getParent {
my ( $this, $topic ) = @_;
if ( ! defined( $this->{parent}{$topic} )) {
my( $meta, $text ) =
$this->{session}->{store}->readTopic( undef, $this->{web}, $topic );
my $parent = $meta->get('TOPICPARENT');
$this->{parent}{$topic} = $parent->{name} if $parent;
$this->{parent}{$topic} ||= '';
}
return $this->{parent}{$topic};
}
1;