File: Collection.pm

package info (click to toggle)
libmail-box-perl 2.068-1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 3,576 kB
  • ctags: 1,493
  • sloc: perl: 22,358; makefile: 49
file content (66 lines) | stat: -rw-r--r-- 1,461 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
use strict;
use warnings;

package Mail::Box::Collection;
use vars '$VERSION';
$VERSION = '2.068';
use base qw/User::Identity::Collection Mail::Reporter/;

use Mail::Box::Identity;

use Scalar::Util    qw/weaken/;


sub new(@)
{   my $class = shift;
    unshift  @_,'name' if @_ % 2;
    $class->Mail::Reporter::new(@_);
}
                                                                                
sub init($)
{   my ($self, $args) = @_;
    $args->{item_type} ||= 'Mail::Box::Identity';

    $self->Mail::Reporter::init($args);
    $self->User::Identity::Collection::init($args);
                                                                                
    weaken($self->{MBC_manager})
       if $self->{MBC_manager}  = delete $args->{manager};
    
    $self->{MBC_ftype}    = delete $args->{folder_type};
    $self;
}

sub type() { 'folders' }

#------------------------------------------


sub manager()
{   my $self = shift;
    return $self->{MBC_manager}
        if defined $self->{MBC_manager};

    my $parent = $self->parent;
    defined $parent ? $self->parent->manager : undef;
}

#------------------------------------------


sub folderType()
{   my $self = shift;
    return($self->{MBC_ftype} = shift) if @_;
    return $self->{MBC_ftype} if exists $self->{MBC_ftype};

    if(my $parent = $self->parent)
    {   return $self->{MBC_ftype} = $parent->folderType;
    }

    undef;
}

#------------------------------------------

1;