Group.t: group karma tests, better clean-up at end
User.t: better clean-up at end Scratch.t: no newlines in test output Session/Scratch.pm: convert to use placeholders Ad.pm: Add missing line of POD. Group.pm: add method to get all users in a group by karma. User.pm: isInGroup to use getKarmaUsers.
This commit is contained in:
parent
fd5be2ce2d
commit
3e179fa4ad
7 changed files with 120 additions and 47 deletions
|
|
@ -232,6 +232,8 @@ The number of clicks that have been purchased for this ad.
|
|||
|
||||
=head4 impressionsBought
|
||||
|
||||
The number of times the user has paid for this ad to be displayed on the site.
|
||||
|
||||
=cut
|
||||
|
||||
sub set {
|
||||
|
|
|
|||
|
|
@ -421,19 +421,17 @@ sub expireOffset {
|
|||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 externalUsers ( )
|
||||
=head2 getDatabaseUsers ( )
|
||||
|
||||
Get the set of users allowed to be in this group via external means, such as database
|
||||
queries, LDAP and/or IP filtering.
|
||||
Get the set of users allowed to be in this group via a database query.
|
||||
|
||||
=cut
|
||||
|
||||
sub externalUsers {
|
||||
sub getDatabaseUsers {
|
||||
my $self = shift;
|
||||
my @dbUsers = ();
|
||||
my $gid = $self->getId;
|
||||
my @externalUsers = ();
|
||||
my $isInGroup = $self->session->stow->get('isInGroup');
|
||||
### Check external database
|
||||
### Check db database
|
||||
if ($self->get("dbQuery") && defined $self->get("databaseLinkId")) {
|
||||
my $dbLink = WebGUI::DatabaseLink->new($self->session,$self->get("databaseLinkId"));
|
||||
my $dbh = $dbLink->db;
|
||||
|
|
@ -446,16 +444,29 @@ sub externalUsers {
|
|||
}
|
||||
else {
|
||||
while(my ($userId)=$sth->array) {
|
||||
push @externalUsers, $userId;
|
||||
$isInGroup->{$userId}{$gid} = 1;
|
||||
push @dbUsers, $userId;
|
||||
}
|
||||
}
|
||||
$sth->finish;
|
||||
$dbLink->disconnect;
|
||||
}
|
||||
}
|
||||
$self->session->stow->set("isInGroup",$isInGroup);
|
||||
return \@externalUsers;
|
||||
return \@dbUsers;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 getKarmaUsers ( )
|
||||
|
||||
Get the set of users allowed to be in this group via their current karma setting
|
||||
and this group's karmaThreshold. All users with
|
||||
|
||||
=cut
|
||||
|
||||
sub getKarmaUsers {
|
||||
my $self = shift;
|
||||
return [] unless $self->session->setting->get('useKarma');
|
||||
return $self->session->db->buildArrayRef('select userId from users where karma >= ?', [$self->karmaThreshold]);
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
|
@ -591,7 +602,6 @@ A boolean value to determine whether the method should return the users directly
|
|||
A boolean that if set true will return the users list minus the expired groupings.
|
||||
|
||||
=cut
|
||||
|
||||
sub getUsers {
|
||||
my $self = shift;
|
||||
my $recursive = shift;
|
||||
|
|
@ -615,12 +625,19 @@ sub getUsers {
|
|||
}
|
||||
##Have to iterate twice due to the withoutExpired clause.
|
||||
foreach my $groupId (@{ $groups }) {
|
||||
push @externalUsers, @{ WebGUI::Group->new($self->session, $groupId)->externalUsers() };
|
||||
my $extGroup = WebGUI::Group->new($self->session, $groupId);
|
||||
push @externalUsers,
|
||||
@{ $extGroup->getDatabaseUsers() },
|
||||
@{ $extGroup->getKarmaUsers() },
|
||||
;
|
||||
}
|
||||
}
|
||||
$clause .= ")";
|
||||
my @localUsers = $self->session->db->buildArray("select userId from groupings where $clause");
|
||||
push @externalUsers, @{ $self->externalUsers() };
|
||||
push @externalUsers,
|
||||
@{ $self->getDatabaseUsers() },
|
||||
@{ $self->getKarmaUsers() },
|
||||
;
|
||||
my @users = ( @localUsers, @externalUsers );
|
||||
return \@users;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -174,7 +174,7 @@ The current session.
|
|||
sub new {
|
||||
my $class = shift;
|
||||
my $session = shift;
|
||||
my $data = $session->db->buildHashRef("select name,value from userSessionScratch where sessionId=".$session->db->quote($session->getId));
|
||||
my $data = $session->db->buildHashRef("select name,value from userSessionScratch where sessionId=?",[$session->getId]);
|
||||
bless {_session=>$session,_sessionId=>$session->getId, _data=>$data}, $class;
|
||||
}
|
||||
|
||||
|
|
@ -215,7 +215,7 @@ sub set {
|
|||
my $value = shift;
|
||||
return undef unless ($name);
|
||||
$self->{_data}{$name} = $value;
|
||||
$self->session->db->write("replace into userSessionScratch (sessionId, name, value) values (".$self->session->db->quoteAndJoin([$self->{_sessionId}, $name, $value]).")");
|
||||
$self->session->db->write("replace into userSessionScratch (sessionId, name, value) values (?,?,?)", [$self->{_sessionId}, $name, $value]);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -299,14 +299,6 @@ sub isInGroup {
|
|||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
### Check karma levels.
|
||||
if ($self->session->setting->get("useKarma")) {
|
||||
if ($self->karma >= $group->get("karmaThreshold")) {
|
||||
$isInGroup->{$uid}{$gid} = 1;
|
||||
$self->session->stow->set("isInGroup",$isInGroup);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
### Check ldap
|
||||
if ($group->get("ldapGroup") && $group->get("ldapGroupProperty")) {
|
||||
|
|
@ -349,9 +341,15 @@ sub isInGroup {
|
|||
}
|
||||
}
|
||||
|
||||
if ($group->get("dbQuery") && defined $group->get("databaseLinkId")) {
|
||||
my @externalUsers = @{ $group->externalUsers() } ;
|
||||
foreach my $extUserId ( @externalUsers ) {
|
||||
if (my @dbUsers = @{ $group->getDatabaseUsers() }) {
|
||||
foreach my $extUserId ( @dbUsers ) {
|
||||
$isInGroup->{$extUserId}{$gid} = 1;
|
||||
}
|
||||
$self->session->stow->set("isInGroup",$isInGroup);
|
||||
return 1 if ($isInGroup->{$uid}{$gid});
|
||||
}
|
||||
if (my @karmaUsers = @{ $group->getKarmaUsers() }) {
|
||||
foreach my $extUserId ( @karmaUsers ) {
|
||||
$isInGroup->{$extUserId}{$gid} = 1;
|
||||
}
|
||||
$self->session->stow->set("isInGroup",$isInGroup);
|
||||
|
|
@ -401,8 +399,8 @@ sub karma {
|
|||
if (defined $amount && defined $source && defined $description) {
|
||||
$self->uncache;
|
||||
$self->{_user}{karma} += $amount;
|
||||
$self->session->db->write("update users set karma=karma+".$self->session->db->quote($amount)." where userId=".$self->session->db->quote($self->userId));
|
||||
$self->session->db->write("insert into karmaLog values (".$self->session->db->quote($self->userId).",$amount,".$self->session->db->quote($source).",".$self->session->db->quote($description).",".$self->session->datetime->time().")");
|
||||
$self->session->db->write("update users set karma=karma+? where userId=?", [$amount, $self->userId]);
|
||||
$self->session->db->write("insert into karmaLog values (?,?,?,?,?)",[$self->userId, $amount, $source, $description, $self->session->datetime->time()]);
|
||||
}
|
||||
return $self->{_user}{karma};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue