70 lines
1.7 KiB
Perl
70 lines
1.7 KiB
Perl
|
# vim: set foldmarker={,}:
|
||
|
use strict;
|
||
|
|
||
|
package RSSTootalizer::Base;
|
||
|
use JSON;
|
||
|
use Data::Dumper;
|
||
|
use RSSTootalizer::DB;
|
||
|
use Digest::MD5 qw(md5_hex);
|
||
|
|
||
|
# Class functions
|
||
|
sub all {
|
||
|
my $class = shift;
|
||
|
|
||
|
my $all = RSSTootalizer::DB->doSELECT("SELECT * FROM ".$class->dbTable." ORDER BY ".$class->orderBy);
|
||
|
my @retVal;
|
||
|
foreach my $object (@$all){
|
||
|
$object = $class->new($object);
|
||
|
push @retVal, $object;
|
||
|
}
|
||
|
return @retVal;
|
||
|
}
|
||
|
sub get_by {
|
||
|
my $class = shift;
|
||
|
|
||
|
my $key = shift;
|
||
|
my $value = shift;
|
||
|
my $retVal = RSSTootalizer::DB->doSELECT("SELECT * FROM ".$class->dbTable." WHERE ".$key." ".($value =~ /%/ ? "LIKE" : "=")." ?", $value);
|
||
|
$retVal = $$retVal[0];
|
||
|
|
||
|
return 0 unless defined($retVal);
|
||
|
return $class->new($retVal);
|
||
|
}
|
||
|
sub create {
|
||
|
my $class = shift;
|
||
|
my %data = @_;
|
||
|
|
||
|
RSSTootalizer::DB->doINSERThash($class->dbTable, %data);
|
||
|
my $data = RSSTootalizer::DB->doSELECT("SELECT * FROM ".$class->dbTable." WHERE ID = LAST_INSERT_ID()");
|
||
|
$data = $$data[0];
|
||
|
return $class->get_by("ID", $$data{ID});
|
||
|
}
|
||
|
sub new {
|
||
|
my $this = shift;
|
||
|
my $data = shift;
|
||
|
unless ($data){
|
||
|
&main::Error("Invalid data call", "new() called without data!");
|
||
|
}
|
||
|
|
||
|
my $self = { "data" => $data };
|
||
|
bless ($self, $this);
|
||
|
}
|
||
|
|
||
|
# Object methods
|
||
|
sub save {
|
||
|
my $self = shift;
|
||
|
|
||
|
if (exists($self->{"data"}->{"password"}) && "x".$self->{"data"}->{"password"} ne "x"){
|
||
|
$self->{"data"}->{"password"} = md5_hex($self->{"data"}->{"ID"}.$self->{"data"}->{"password"});
|
||
|
} else {
|
||
|
delete $self->{"data"}->{"password"};
|
||
|
}
|
||
|
return RSSTootalizer::DB->doUPDATEhash($self->dbTable, "ID = ".$self->{"data"}->{"ID"}, %{$self->{"data"}});
|
||
|
}
|
||
|
sub delete {
|
||
|
my $self = shift;
|
||
|
|
||
|
return RSSTootalizer::DB->doDELETE("DELETE FROM ".$self->dbTable." WHERE ID = ?", $self->{data}->{ID});
|
||
|
}
|
||
|
1;
|