1 package VJournal::ProviderList;
4 use constant PROVIDER_LIST_FILE=>"providers.lst";
8 croak("VJournal::Session config is not loaded")
9 if (!exists $VJournal::Session::config{-statedir});
11 open $f,"<",$VJournal::Session::config{-statedir}."/".PROVIDER_LIST_FILE or croak("cannot find provider list file");
17 my ($id,$name,$format,$translate_underscore,$format2,$urlasname)=split(":");
18 next SITE unless $id=~/\w+/;
19 $self->{$id}={-id=>$id,
21 -format=>[$format,($format2?$format2:())],
22 -translate_underscore=>$translate_underscore,
23 -url_as_name=>$urlasname};
26 return bless $self,$class;
32 for my $site (values %$self) {
33 push @out,{id=>$site->{-id},name=>$site->{-name}};
35 push @out,{id=>"_",name=>"Other site"};
40 my ($self,$user,$site_id) = @_;
41 if (!exists($self->{$site_id})) {
42 # If no valid site id provided, assume that we have just openid
43 # url instead of user name
46 my $site=$self->{$site_id};
47 if (!index($site->{-format}[0],"%s")>=0) {
48 return $site->{-format}[0];
50 if ($site->{-translate_underscore}) {
51 if (defined $site->{-format}[1] && ($user=~/^_/ || $user=~/_$/))
53 return sprintf($site->{-format}[1],$user);
58 return sprintf($site->{-format}[0],$user);
63 return !$self->{$id}{-uri_as_name};