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 )