Skip to content

Commit 469a805

Browse files
authored
Merge pull request #516 from ikedas/issue-461-addition-trial5 by ikedas
Improving data sources
2 parents f8dd33c + c4087f3 commit 469a805

25 files changed

+3254
-3079
lines changed

cpanfile

+9-2
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ feature 'Encode::Locale', 'Useful when running command line utilities in the con
250250
};
251251

252252
feature 'remote-list-including', 'Required when including members of a remote list.' => sub {
253-
requires 'IO::Socket::SSL', '>= 0.90';
253+
requires 'LWP::Protocol::https';
254254
};
255255

256256
feature 'Mail::DKIM::Verifier', 'Required in order to use DKIM features (both for signature verification and signature insertion).' => sub {
@@ -269,10 +269,17 @@ feature 'ldap', 'Required to query LDAP directories. Sympa can do LDAP-based aut
269269
# openldap-devel is needed to build the Perl code
270270
requires 'Net::LDAP', '>= 0.40';
271271

272-
# Note: 'Net::LDAP::Entry', 'Net::LDAP::Util' and 'Net::LDAPS' are also
272+
# Note: 'Net::LDAP::Entry' and 'Net::LDAP::Util' are also
273273
# included in perl-ldap.
274274
};
275275

276+
feature 'ldap-secure', 'Required to query LDAP directories over TLS.' => sub {
277+
requires 'Net::LDAP', '>= 0.40';
278+
requires 'IO::Socket::SSL', '>= 0.90';
279+
280+
# Note: 'Net::LDAPS' is also included in perl-ldap.
281+
};
282+
276283
feature 'Net::SMTP', 'This is required if you set "list_check_smtp" sympa.conf parameter, used to check existing aliases before mailing list creation.' => sub {
277284
requires 'Net::SMTP';
278285
};

default/web_tt2/edit.tt2

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
<div class="row">
2525
[% FOREACH kS = pS.format ~%]
2626
[% NEXT UNLESS kS.privilege == 'read' || kS.privilege == 'write' ~%]
27-
[% IF kS.name == 'subscribed' || kS.name == 'included' || kS.name == 'id' ~%]
27+
[% IF kS.name == 'subscribed' || kS.name == 'inclusion' || kS.name == 'inclusion_ext' ~%]
2828
[% NEXT %] [%~# FIXME %]
2929
[%~ END %]
3030

default/web_tt2/subscriber_table.tt2

+8-8
Original file line numberDiff line numberDiff line change
@@ -155,14 +155,14 @@
155155
[%|optdesc('reception')%][% u.reception %][%END%]
156156
</td>
157157
<td>
158-
[% IF u.subscribed %]
159-
[% IF u.included %]
160-
[%|loc%]subscribed[%END%]<br />[% u.sources %]
161-
[% ELSE %]
162-
[%|loc%]subscribed[%END%]
163-
[% END %]
164-
[% ELSE %]
165-
[% u.sources %]
158+
[% IF u.subscribed %][%|loc%]subscribed[%END%][% END ~%]
159+
[% IF u.subscribed && u.inclusion.defined() %]<br />[% END ~%]
160+
[% IF u.inclusion.defined() ~%]
161+
[% IF u.inclusion_label ~%]
162+
[% u.inclusion_label %]
163+
[%~ ELSE ~%]
164+
[%|loc%]included[%END%]
165+
[%~ END %]
166166
[% END %]
167167
</td>
168168
<td>

src/cgi/wwsympa.fcgi.in

+21-29
Original file line numberDiff line numberDiff line change
@@ -4752,7 +4752,6 @@ sub _review_member {
47524752
my @users;
47534753
my $size;
47544754
my $sortby = lc($in{'sortby'} || 'email');
4755-
my %sources;
47564755

47574756
## Access control
47584757
return undef unless defined check_authz('do_review', 'review');
@@ -4846,7 +4845,7 @@ sub _review_member {
48464845
}
48474846
foreach my $i (@members) {
48484847
# Add user
4849-
_prepare_subscriber($i, \@additional_fields, \%sources);
4848+
_prepare_subscriber($i, \@additional_fields);
48504849
push @{$param->{'members'}}, $i;
48514850
}
48524851

@@ -5032,7 +5031,6 @@ sub do_show_exclude {
50325031
sub do_search {
50335032
wwslog('info', '(%s)', $in{'filter'});
50345033

5035-
my %sources;
50365034
my %emails;
50375035

50385036
## Additional DB fields
@@ -5074,7 +5072,7 @@ sub do_search {
50745072
}
50755073

50765074
## Add user
5077-
_prepare_subscriber($i, \@additional_fields, \%sources);
5075+
_prepare_subscriber($i, \@additional_fields);
50785076

50795077
$record++;
50805078
push @{$param->{'members'}}, $i;
@@ -15169,22 +15167,15 @@ sub do_search_user {
1516915167
}
1517015168

1517115169
if ($role eq 'member') {
15172-
$param->{'which'}{$l}{'is_member'} = 1;
15173-
$param->{'which'}{$l}{'reception'} =
15174-
$list->{'user'}{'reception'};
15175-
$param->{'which'}{$l}{'include_source'} =
15176-
$list->{'user'}{'include_source'};
15177-
$param->{'which'}{$l}{'bounce'} = $list->{'user'}{'bounce'};
15178-
$param->{'which'}{$l}{'topic'} = $list->{'user'}{'topic'};
15179-
$param->{'which'}{$l}{'included'} =
15180-
$list->{'user'}{'included'}
15181-
if ($list->{'user'}{'included'} == 1);
15182-
$param->{'which'}{$l}{'subscribed'} =
15183-
$list->{'user'}{'subscribed'}
15184-
if ($list->{'user'}{'subscribed'} == 1);
15185-
my $un = $list->{'user'}{'subscribed'};
15186-
# $param->{'which'}{$l}{'subscribed'} = 1;
15187-
15170+
$param->{'which'}{$l}{'is_member'} = 1;
15171+
$param->{'which'}{$l}{'subscribed'} = 1
15172+
if $list->{'user'}{'subscribed'};
15173+
my @keys = qw(reception bounce topic);
15174+
@{$param->{'which'}{$l}}{@keys} = @{$list->{'user'}}{@keys};
15175+
15176+
# Compat. <= 6.2.44
15177+
$param->{'which'}{$l}{'included'} = 1
15178+
if defined $list->{'user'}{'inclusion'};
1518815179
} elsif ($role eq 'owner') {
1518915180
$param->{'which'}{$l}{'is_owner'} = 1;
1519015181
} elsif ($role eq 'editor') {
@@ -16792,16 +16783,15 @@ sub do_lca {
1679216783
sub _prepare_subscriber {
1679316784
my $user = shift;
1679416785
my $additional_fields = shift;
16795-
my $sources = shift;
1679616786

16797-
## Add user
16787+
#FIXME: don't overwrite.
1679816788
$user->{'date'} =
16799-
$language->gettext_strftime("%d %b %Y", localtime($user->{'date'}));
16789+
$language->gettext_strftime("%d %b %Y", localtime $user->{'date'});
1680016790
$user->{'update_date'} =
1680116791
$language->gettext_strftime("%d %b %Y",
16802-
localtime($user->{'update_date'}));
16792+
localtime $user->{'update_date'});
1680316793

16804-
## Reception mode and topics
16794+
# Reception mode and topics.
1680516795
$user->{'reception'} ||= 'mail';
1680616796
if (($user->{'reception'} eq 'mail') && $user->{'topics'}) {
1680716797
$user->{'reception'} =
@@ -16812,10 +16802,6 @@ sub _prepare_subscriber {
1681216802
$user->{'domain'} = $1;
1681316803
$user->{'pictures_url'} = $list->find_picture_url($user->{'email'});
1681416804

16815-
## Check data sources
16816-
$user->{'sources'} = $list->get_datasource_name($user->{'id'})
16817-
if ($user->{'id'});
16818-
1681916805
if (@{$additional_fields}) {
1682016806
my @fields;
1682116807
foreach my $f (@{$additional_fields}) {
@@ -16824,6 +16810,12 @@ sub _prepare_subscriber {
1682416810
$user->{'additional'} = join ',', @fields;
1682516811
}
1682616812

16813+
# Compat. <= 6.2.44
16814+
if (defined $user->{'inclusion'}) {
16815+
$user->{'included'} = 1;
16816+
$user->{'sources'} = $language->gettext('included');
16817+
}
16818+
1682716819
return 1;
1682816820
}
1682916821

src/lib/Makefile.am

+9-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,14 @@ nobase_modules_DATA = \
5555
Sympa/DatabaseDriver/PostgreSQL.pm \
5656
Sympa/DatabaseDriver/SQLite.pm \
5757
Sympa/DatabaseManager.pm \
58-
Sympa/Datasource.pm \
58+
Sympa/DataSource.pm \
59+
Sympa/DataSource/File.pm \
60+
Sympa/DataSource/LDAP.pm \
61+
Sympa/DataSource/LDAP2.pm \
62+
Sympa/DataSource/List.pm \
63+
Sympa/DataSource/RemoteDump.pm \
64+
Sympa/DataSource/RemoteFile.pm \
65+
Sympa/DataSource/SQL.pm \
5966
Sympa/Family.pm \
6067
Sympa/HTML/FormatText.pm \
6168
Sympa/HTMLDecorator.pm \
@@ -94,6 +101,7 @@ nobase_modules_DATA = \
94101
Sympa/Request/Handler/global_signoff.pm \
95102
Sympa/Request/Handler/help.pm \
96103
Sympa/Request/Handler/import.pm \
104+
Sympa/Request/Handler/include.pm \
97105
Sympa/Request/Handler/index.pm \
98106
Sympa/Request/Handler/info.pm \
99107
Sympa/Request/Handler/invite.pm \

0 commit comments

Comments
 (0)