X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=licom.cgi;h=29dbec8cfc75d7bde2924614a24dbadf006ce390;hb=c91ccdf851b05521441e9460d4605c1ca0eae277;hp=59eddd66fb65a04bcd2e978a6bb5adf4601cadaa;hpb=2f7d9ec3631d96fd673c2f6cee3dda7acfaa86ee;p=licom.git diff --git a/licom.cgi b/licom.cgi index 59eddd6..29dbec8 100755 --- a/licom.cgi +++ b/licom.cgi @@ -1,5 +1,21 @@ #!/usr/bin/perl +# LiCoM - Lightweight contact manager +# Copyright (c) 2005-2006 Florian octo Forster +# +# 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; only version 2 of the License is applicable. +# +# 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. See the GNU General Public License for more +# details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software # Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + use strict; use warnings; use lib (qw(lib)); @@ -7,15 +23,15 @@ use lib (qw(lib)); use CGI (':cgi'); use CGI::Carp (qw(fatalsToBrowser)); use URI::Escape; -use Data::Dumper; -use LiCoM::Config (qw(get_config)); -use LiCoM::Person; +use LiCoM::Config (qw(get_config set_config read_config)); +use LiCoM::Connection (); +use LiCoM::Group (); +use LiCoM::Person (); our $Debug = 0; -our $Config = {}; -our @MultiFields = (qw(address homephone cellphone officephone fax mail uri group)); +our @MultiFields = (qw(address homephone cellphone officephone fax mail uri)); our %FieldNames = ( @@ -49,24 +65,25 @@ our %Actions = vcard => \&action_vcard ); -$Config = get_config (); +read_config (); # make sure AuthLDAPRemoteUserIsDN is enabled. die unless ($ENV{'REMOTE_USER'}); -$Config->{'base_dn'} = $ENV{'REMOTE_USER'}; +set_config ('base_dn', $ENV{'REMOTE_USER'}); -die unless (defined ($Config->{'uri'}) and defined ($Config->{'base_dn'}) - and defined ($Config->{'bind_dn'}) and defined ($Config->{'password'})); +die unless (defined (get_config ('uri')) + and defined (get_config ('base_dn')) + and defined (get_config ('bind_dn')) + and defined (get_config ('password'))); -LiCoM::Person->connect +LiCoM::Connection->connect ( - uri => $Config->{'uri'}, - base_dn => $Config->{'base_dn'}, - bind_dn => $Config->{'bind_dn'}, - password => $Config->{'password'} + uri => get_config ('uri'), + bind_dn => get_config ('bind_dn'), + password => get_config ('password') ) or die; -our ($UserCN, $UserID) = LiCoM::Person->get_user ($Config->{'base_dn'}); +our ($UserCN, $UserID) = LiCoM::Person->get_user ($ENV{'REMOTE_USER'}); if (!$UserID and $Action ne 'save') { @@ -95,7 +112,7 @@ elsif (ref ($Actions{$Action}) eq 'ARRAY') } } -LiCoM::Person->disconnect (); +LiCoM::Connection->disconnect (); exit (0); @@ -107,83 +124,60 @@ sub action_browse $group = shift if (@_); $group ||= ''; - my @all; - if ($group) - { - @all = LiCoM::Person->search ([[group => $group]]); - } - else - { - @all = LiCoM::Person->search (); - } - if (!$group) { - my @nogroup = (); - my %groups = (); - for (@all) - { - my $person = $_; - my @g = $person->get ('group'); - - $groups{$_} = (defined ($groups{$_}) ? $groups{$_} + 1 : 1) for (@g); - - push (@nogroup, $person) if (!@g); - } - @all = @nogroup; + my @groups = LiCoM::Group->all (); print qq(\t\t

Contact Groups

\n\t\t\n\n); - } - - if ($group) - { - print qq(\t\t

Contact Group "$group"

\n); + print < + +EOF } else { - print qq(\t\t

Contacts without a group

\n); - } - - print qq(\t\t\n\n); + my $group_obj = LiCoM::Group->load ($group); + my $group_esc = uri_escape ($group_obj->name ()); + my @member_names = $group_obj->get_members (); + + print qq(\t\t

Contact Group "$group"

\n), + qq(\t\t