Added properties argument to getCategories and getFields methods which allow you to specify the states of visible, editable, and in the case of getFields required.
This commit is contained in:
parent
0b78c5315d
commit
c9fac9d620
1 changed files with 97 additions and 13 deletions
|
|
@ -117,38 +117,122 @@ sub get {
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
=head2 getCategories ( )
|
=head2 getCategories ( session , options )
|
||||||
|
|
||||||
Returns an array reference of all WebGUI::ProfileCategory objects in order of sequence. This is a class method.
|
Returns an array reference of all WebGUI::ProfileCategory objects in order of sequence. This is a class method.
|
||||||
|
|
||||||
|
=head3 session
|
||||||
|
|
||||||
|
WebGUI::Session object
|
||||||
|
|
||||||
|
=head3 options
|
||||||
|
|
||||||
|
hash reference of options for returning categories. Passing in more than one option will limit the results to the intersection
|
||||||
|
all the flags passed.
|
||||||
|
|
||||||
|
=head4 editable
|
||||||
|
|
||||||
|
boolean flag which which indicates a specific status of the editable flag for the profile category.
|
||||||
|
If no editable flag is passed in all editable states are returned
|
||||||
|
|
||||||
|
=head4 visible
|
||||||
|
|
||||||
|
boolean flag which indicates the status of the visible flag for the profile category.
|
||||||
|
If no visible flag is passed in all visible states are returend
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
sub getCategories {
|
sub getCategories {
|
||||||
my $class = shift;
|
my $class = shift;
|
||||||
my $session = shift;
|
my $session = shift;
|
||||||
my @categories = ();
|
my $options = shift || {};
|
||||||
foreach my $id ($session->db->buildArray("select profileCategoryId from userProfileCategory order by sequenceNumber")) {
|
|
||||||
push(@categories,WebGUI::ProfileCategory->new($session,$id));
|
my $categories = [];
|
||||||
|
my $whereClause = "";
|
||||||
|
my $bindvars = [];
|
||||||
|
|
||||||
|
foreach my $key (keys %{$options}) {
|
||||||
|
next unless WebGUI::Utility::isIn($key,qw(editable visible));
|
||||||
|
$whereClause .= " and" unless ($whereClause eq "");
|
||||||
|
$whereClause .= " $key=?";
|
||||||
|
push(@{$bindvars},$options->{$key});
|
||||||
|
}
|
||||||
|
|
||||||
|
$whereClause = "where ".$whereClause unless ($whereClause eq "");
|
||||||
|
|
||||||
|
my $sql = qq{
|
||||||
|
select
|
||||||
|
profileCategoryId
|
||||||
|
from
|
||||||
|
userProfileCategory
|
||||||
|
$whereClause
|
||||||
|
order by sequenceNumber
|
||||||
|
};
|
||||||
|
|
||||||
|
foreach my $id ($session->db->buildArray($sql,$bindvars)) {
|
||||||
|
push(@{$categories},WebGUI::ProfileCategory->new($session,$id));
|
||||||
}
|
}
|
||||||
return \@categories;
|
return $categories;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
=head2 getFields ( )
|
=head2 getFields ( options )
|
||||||
|
|
||||||
Returns an array reference of all WebGUI::ProfileField objects that are part of this category in order of sequence.
|
Returns an array reference of all WebGUI::ProfileField objects that are part of this category in order of sequence.
|
||||||
|
|
||||||
|
=head3 options
|
||||||
|
|
||||||
|
hash reference of options for returning fields. Passing in more than one option will limit the results to the intersection
|
||||||
|
all the flags passed.
|
||||||
|
|
||||||
|
=head4 editable
|
||||||
|
|
||||||
|
boolean flag which which indicates a specific status of the editable flag for the profile category.
|
||||||
|
If no editable flag is passed in all editable states are returned
|
||||||
|
|
||||||
|
=head4 visible
|
||||||
|
|
||||||
|
boolean flag which indicates the status of the visible flag for the profile category.
|
||||||
|
If no visible flag is passed in all viewable states are returend
|
||||||
|
|
||||||
|
=head4 required
|
||||||
|
|
||||||
|
boolean flag which indicates the status of the required flag for the profile category.
|
||||||
|
If no required flag is passed in all required states are returend
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
sub getFields {
|
sub getFields {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my @fields = ();
|
my $options = shift || {};
|
||||||
foreach my $fieldName ($self->session->db->buildArray("select fieldName from userProfileField where profileCategoryId=".$self->session->db->quote($self->getId)." order by sequenceNumber")){
|
my $session = $self->session;
|
||||||
push(@fields,WebGUI::ProfileField->new($self->session,$fieldName));
|
my $fields = [];
|
||||||
|
|
||||||
|
my $whereClause = "where profileCategoryId=? ";
|
||||||
|
my $bindvars = [$self->getId];
|
||||||
|
|
||||||
|
foreach my $key (keys %{$options}) {
|
||||||
|
#Skip bad stuff that will crash the query
|
||||||
|
next unless WebGUI::Utility::isIn($key,qw(editable visible required));
|
||||||
|
$whereClause .= " and $key=?";
|
||||||
|
push(@{$bindvars},$options->{$key});
|
||||||
|
}
|
||||||
|
|
||||||
|
my $sql = qq{
|
||||||
|
select
|
||||||
|
fieldName
|
||||||
|
from
|
||||||
|
userProfileField
|
||||||
|
$whereClause
|
||||||
|
order by sequenceNumber
|
||||||
|
};
|
||||||
|
|
||||||
|
foreach my $fieldName ($session->db->buildArray($sql,$bindvars)) {
|
||||||
|
push(@{$fields},WebGUI::ProfileField->new($session,$fieldName));
|
||||||
}
|
}
|
||||||
return \@fields;
|
return $fields;
|
||||||
}
|
}
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue