AddressBook
view release on metacpan or search on metacpan
examples/ldap-abook.conf view on Meta::CPAN
<db type="abookentry" name="On Phone List" default="No" />
<db type="LDAP" name="phonelist" />
<db type="LDIF" name="phonelist" />
</field>
<field name="samelastname" order="18" type="boolean" non_multiple="yes" >
<db type="Text" name="Same Last Name" />
<db type="abookentry" name="Same Last Name" default="Yes" />
<db type="LDAP" name="samelastname" />
<db type="LDIF" name="samelastname" />
</field>
<field name="category" order="19" type="select" non_multiple="yes" values="personal,contacts">
<db type="Text" name="category"/>
<db type="abookentry" name="category" size="2"/>
<db type="LDAP" name="category" />
<db type="LDIF" name="category" />
<db type="abooksearch" name="Category" />
<db type="PDB" name="category" />
</field>
</fields>
<databases>
<abooksearch
lib/AddressBook/Config.pm view on Meta::CPAN
$VERSION = '0.13';
$AddressBook::Config::config_file = "/etc/AddressBook.conf";
#----------------------------------------------------------------
sub new {
my $class=shift;
my %args = @_;
my $self = {};
bless ($self,$class);
my ($parser,$config,$field,$field_name,$attr,$db_type,$db_field_name,$db,$select,$option,$value);
$self->{config_file} = $args{config_file} || $AddressBook::Config::config_file;
eval {
$parser = XML::DOM::Parser->new(ErrorContext=>1,
ParseParamEnt=>1,
ProtocolEncoding=>'UTF-8');
$config = $parser->parsefile($self->{config_file});
};
if ($@ || ! $config) {
$self->configError("Error reading config file: $@");
}
lib/AddressBook/DB/DBI.pm view on Meta::CPAN
$self->{dbh}->disconnect;
}
sub search {
my $self = shift;
my $class = ref $self || croak "Not a method call";
my @ret;
my %arg = @_;
my ($filter,@filter,$count);
my $op = "select * from " . $self->{table};
if(defined $arg{filter}) {
my $entry = AddressBook::Entry->new(attr=>{%{$arg{filter}}},
config => $self->{config},
);
$entry = $entry->get(db=>$self->{db_name},values_only=>'1');
foreach (keys %{$entry}) {
push @filter,"$_ = ".$self->{dbh}->quote(join ($self->{intra_attr_sep_char},@{$entry->{$_}}));
}
$filter = join " AND ",@filter;
$op .= " where $filter";
}
my $result = $self->{dbh}->selectall_arrayref($op) || croak $self->{dbh}->errstr;
$count = $#{$result} + 1;
$self->{so} = $self->{dbh}->prepare($op) || croak $self->{dbh}->errstr;
$self->{so}->execute;
return $count;
}
sub read {
my $self = shift;
my $class = ref $self || croak "Not a method call";
if (! defined ($self->{so})) {
lib/AddressBook/DB/HTML.pm view on Meta::CPAN
$format =~ s'keys %attributes'@attributes'g;
eval qq{\$ret = $format}; warn "Syntax error in HTML backend \"write_format\": $@" if $@;
return $ret;
}
sub entry_form {
my $self = shift;
my $class = ref $self || croak "Not a method call";
my $entry = shift;
my $formname = shift;
my ($format,$ret,$key,$option,@options,%selected,$i,%result,$default);
#$entry->calculate;
my $attr = $entry->get(db=>$self->{db_name});
my %attributes = %{$entry->get(db=>$self->{db_name},values_only=>1)};
foreach $key (keys %attributes) {
if ($attr->{$key}->{meta}->{type} =~ /^(text|url|lurl|email|date|phone)$/) {
if ($attr->{$key}->{meta}->{read_only} =~ /yes/i) {
$result{$key} = join ($self->{intra_attr_sep},
@{$attributes{$key}});
} else {
$result{$key} = join ($self->{intra_attr_sep},
lib/AddressBook/DB/HTML.pm view on Meta::CPAN
$result{$key} = join ($self->{intra_attr_sep},
@{$attributes{$key}});
} else {
$result{$key} = join ($self->{intra_attr_sep},
map {textarea(-name=>$key,
-columns=>30,
-rows=>10,
-override=>1,
-default=>$_)} @{$attributes{$key}});
}
} elsif ($attr->{$key}->{meta}->{type} eq "select") {
if ($attr->{$key}->{meta}->{read_only} =~ /yes/i) {
$result{$key} = join ($self->{intra_attr_sep},
@{$attributes{$key}});
} else {
foreach (@{$attributes{$key}}) {
$selected{$_} = 1;
}
@options = split ",",$attr->{$key}->{meta}->{values};
$result{$key} = "<select name=\"$key\" size=";
$result{$key} .= $#options + 1;
if ($attr->{$key}->{meta}->{non_multiple} !~ /yes/i) {
$result{$key} .= " multiple";
}
$result{$key} .= ">";
foreach $option (@options) {
if (exists $selected{$option}) {
$result{$key} .= "<option selected>$option";
} else {
$result{$key} .= "<option>$option";
}
}
$result{$key} .= "</select>";
}
} elsif ($attr->{$key}->{meta}->{type} eq "boolean") {
@options=();
for ($i=0;$i<=$#{$attributes{$key}};$i++) {
if ($attr->{$key}->{meta}->{read_only} =~ /yes/i) {
$options[$i] = $attributes{$key}->[$i];
} else {
if ($attributes{$key}->[$i] =~ /yes/i) {
$options[$i] = "<input type=checkbox name=\"_${key}_$i\" value=\"yes\" checked>";
} else {
( run in 1.017 second using v1.01-cache-2.11-cpan-49f99fa48dc )