use Email::Valid;
use Data::Dumper;
+
+use constant SIDEBAR_TABLE_NAME => 'ns_users_sidebar';
+
+sub on_start_up {
+ my $self = shift;
+ my $table_name = SIDEBAR_TABLE_NAME;
+ if (!$self->table_exists($table_name)) {
+ my $dbh = $self->connect_db;
+
+ my $sql = <<"EOSQL";
+CREATE TABLE IF NOT EXISTS $table_name (
+ uid mediumint(8) unsigned NOT NULL UNIQUE,
+ items varchar(256) DEFAULT ""
+) DEFAULT CHARSET=utf8mb4
+EOSQL
+ my $rs = $dbh->do($sql, undef);
+ $dbh->disconnect;
+ if ($rs) {
+ return 1;
+ }
+ }
+ $self->warn("cannot create table: $table_name");
+ return;
+}
+
sub authentification {
my ($self, $nickname, $passwd) = @_;
return $self->select(uid => 1);
}
+sub sidebar_items {
+ my ($self, $key, $value) = @_;
+ return if ($key ne 'uid');
+ my $boxes = $self->new_instance_of("Newslash::Model::Boxes");
+ my $user_sidebar = $self->select(target => "sidebar", uid => $value);
+ my $items = $user_sidebar ? $user_sidebar->{items} : [1, 2];
+
+ my $user_boxes = [];
+ for my $box_id (@$items) {
+ my $box = $boxes->select(id => $box_id);
+ push @$user_boxes, $box;
+ }
+ return $user_boxes;
+}
+
sub _create_user_object {
my ($self, $user) = @_;
$ret = $self->_select("users_acl", uid => $params{uid});
}
}
-
- if ($type eq 'info') {
+ elsif ($type eq 'info') {
if (exists $params{uid}) {
$ret = $self->_select("users_info", uid => $params{uid});
}
}
-
- if ($type eq 'comments') {
+ elsif ($type eq 'comments') {
if (exists $params{uid}) {
$ret = $self->_select("users_comments", uid => $params{uid});
}
}
-
- if ($type eq 'param') {
+ elsif ($type eq 'param') {
if (exists $params{uid}) {
$ret = $self->_select("users_param", uid => $params{uid});
}
}
+ elsif ($type eq 'sidebar') {
+ if (exists $params{uid}) {
+ $ret = $self->_select("ns_users_sidebar", uid => $params{uid});
+ return if !$ret;
+ return if !@$ret;
+ my @items = split /\s+/, $ret->[0]->{items};
+ return {uid => $ret->[0]->{uid}, items => \@items};
+ }
+ }
return if !$ret;
return $ret->[0];
}