}
sub select {
- my ($self, $key, $value) = @_;
- my $user;
+ my $self = shift @_;
+ my %params = @_;
+
+ my $type = $params{target} || 'user';
+
+ if ($type eq 'user') {
+ my $user;
+ if (exists $params{nickname}) {
+ $user = $self->_get(nickname => $params{nickname});
+ }
+ elsif (exists $params{uid}) {
+ $user = $self->_get(uid => $params{uid});
+ }
+ elsif (exists $params{matchname}) {
+ $user = $self->_get(matchname => $params{matchname});
+ }
+ elsif (exists $params{email}) {
+ $user = $self->_get(realemail => $params{email});
+ }
- if ($key eq 'nickname') {
- $user = $self->_get(nickname => $value);
+ if ($user) {
+ return $self->_create_user_object($user);
+ }
+ return;
}
- if ($key eq 'uid') {
- $user = $self->_get(uid => $value);
+ if ($type eq 'acl') {
+ my $acl;
+ if (exists $params{uid}) {
+ $params = $self->_acl(uid => $params{uid});
+ }
+ return $acl;
}
- if ($key eq 'matchname') {
- $user = $self->_get(matchname => $value);
+ if ($type eq 'info') {
+ my $info;
+ if (exists $params{uid}) {
+ $params = $self->_info(uid => $params{uid});
+ }
+ return $info;
}
- if ($key eq 'email') {
- $user = $self->_get(realemail => $value);
+ if ($type eq 'comments') {
+ my $comments;
+ if (exists $params{uid}) {
+ $params = $self->_comments(uid => $params{uid});
+ }
+ return $comments;
}
- if ($user) {
- return $self->_create_user_object($user);
+ if ($type eq 'param') {
+ my $params;
+ if (exists $params{uid}) {
+ $params = $self->_param(uid => $params{uid});
+ }
+ return $params;
}
- return undef;
+ return;
}
+sub _select_rows {
+ my ($self, $sql, $key, $value) = @_;
+
+ my $dbh = $self->connect_db;
+ my $sth = $dbh->prepare($sql);
+ $sth->execute($key, $value);
+ my $rs = $sth->fetchall_arrayref({});
+
+ $sth->finish;
+ $dbh->disconnect();
+
+ return $rs;
+}
+
+sub _acl {
+ my ($self, $key, $value) = @_;
+ my $sql = <<"EOSQL";
+SELECT * FROM users_acl
+ WHERE ? = ?
+EOSQL
+ my $rs = $self->_select_rows($sql, $key, $value);
+ return if (@$rs == 0);
+
+ my $ret = $rs->[0];
+ return $ret;
+}
+
+sub _info {
+ my ($self, $key, $value) = @_;
+ my $sql = <<"EOSQL";
+SELECT * FROM users_info
+ WHERE ? = ?
+EOSQL
+ my $rs = $self->_select_rows($sql, $key, $value);
+ return if (@$rs == 0);
+
+ my $ret = $rs->[0];
+ return $ret;
+}
+
+sub _comments {
+ my ($self, $key, $value) = @_;
+ my $sql = <<"EOSQL";
+SELECT * FROM users_comments
+ WHERE ? = ?
+EOSQL
+ my $rs = $self->_select_rows($sql, $key, $value);
+ return if (@$rs == 0);
+
+ my $ret = $rs->[0];
+ return $ret;
+}
+
+sub _param {
+ my ($self, $key, $value) = @_;
+ my $sql = <<"EOSQL";
+SELECT param_id, name, value FROM users_param
+ WHERE ? = ?
+EOSQL
+
+ my $dbh = $self->connect_db;
+ my $sth = $dbh->prepare($sql);
+ $sth->execute($key, $value);
+ my $rs = $sth->fetchall_hashref('name');
+
+ $sth->finish;
+ $dbh->disconnect();
+
+ return $rs;
+}
+
+
#========================================================================
=head2 _get_salt
return { error => 0, uid => $uid, password => $passwd };
}
+
1;