realization of CRUD + Sql::abstract
I wrote under MVC Catalyst
comment, how is realization? are there errors?
I wrote under MVC Catalyst
comment, how is realization? are there errors?
Code:
package MyApp::Model::ExtraDBI;
use strict;
use warnings;
use base qw( Catalyst::Model Class::Accessor);
use Class::C3::Adopt::NEXT;
use HTML::Entities::Numbered;
__PACKAGE__->mk_accessors(qw/bad_fields_type all_fields_type/);
sub new {
my ($self, $c) = @_;
$self = $self->next::method(@_);
}
sub no_sql {
my $self = shift;
$self->{no_sql} = 1;
return $self;
}
sub no_bad {
my $self = shift;
$self->{no_bad} = 1;
return $self;
}
####
# Add out fields
###
sub _add_sql_fields {
my ($self) = @_;
if ($self->{no_sql} == 1) {
$self->{no_sql} = undef;
return;
}
if ($self->sql_fields_type eq 'arrey') {
if (! $self->{sql_arrey_out} ) {
$self->{sql_arrey_out} = [];
}
push @{ $self->{sql_arrey_out} } , $self->{key}; # is $self->fails_type arrey
}
if ($self->sql_fields_type eq 'hash') {
$self->{sql_hash_out}->{$self->{key}} = $self->{value}; # $self->fails_type HASH key = faild, value = name
}
}
sub _add_bad_fields {
my ($self) = @_;
if ($self->{no_bad} == 1) {
$self->{no_bad} = undef;
return;
}
if ($self->bad_fields_type eq 'arrey') {
if (! $self->{bad_arrey_out} ) {
$self->{bad_arrey_out} = [];
}
push @{ $self->{bad_arrey_out} } , $self->{key}; # is $self->fails_type arrey
}
if ($self->bad_fields_type eq 'hash') {
# my $hash_out;
$self->{bad_hash_out}->{$self->{key}} = $self->{value}; # $self->fails_type HASH key = faild, value = name
}
}
sub _add_all_fields {
my ($self) = @_;
if ($self->{no_sql} == 1) {
$self->{no_sql} = undef;
return;
}
if ($self->all_fields_type eq 'arrey') {
if (! @{ $self->{all_arrey_out} } ) {
$self->{all_arrey_out} = [];
}
push @{ $self->{all_arrey_out} }, $self->{key}; # is $self->fails_type arrey
}
if ($self->all_fields_type eq 'hash') {
# my $hash_out;
$self->{all_hash_out}->{$self->{key}} = $self->{value}; # $self->fails_type HASH key = faild, value = name
}
# return;
}
####
# Clean text, remove bad tag, etc
###
sub _del_blanks_end_began {
my $self = shift;
$self->{value} =~ s/^\s+//;
$self->{value} =~ s/\s+$//;
return $self;
}
sub _cleaning {
my $self = shift;
$self->{value} =~ s!\0!!g;
$self->{value} =~ s|&|;|g;
$self->{value} =~ s|<!--||g;
$self->{value} =~ s|-->||g;
$self->{value} =~ s|<script||ig;
$self->{value} =~ s|>||g;
$self->{value} =~ s|<||g;
$self->{value} =~ s|"||g;
$self->{value} =~ s| | |g;
$self->{value} =~ s!\|!|!g;
$self->{value} =~ s|\n||g;
$self->{value} =~ s|\$||g;
$self->{value} =~ s|\r||g;
$self->{value} =~ s|\_\_(.+?)\_\_||g;
$self->{value} =~ s|\\||g;
$self->{value} =~ s|\'||g;
$self->{value} =~ s|!||g;
return $self;
}
sub _clean_html {
my $self = shift;
$self->{value} = name2decimal($self->{value});
return $self;
}
####
# Valid fields
###
sub head_text {
my $self = shift;
$self->{key} = shift;
$self->{value} = shift;
$self->_del_blanks_end_began;
$self->_cleaning;
$self->_add_all_fields();
return $self->{value} if (defined wantarray);
}
sub cut_xss {
my $self = shift;
$self->{key} = shift if @_;
$self->{value} = shift if @_;
$self->_del_blanks_end_began;
$self->_clean_html;
return $self->{value} if (wantarray);
return $self;
}
sub valid_id {
my $self = shift;
$self->{key} = shift;
$self->{value} = shift;
$self->_del_blanks_end_began();
$self->_add_all_fields();
if (! $self->{value} =~ /^\d+$/) {
$self->_add_bad_fields();
$self->{value} = undef;
}
return $self->{value} if (defined wantarray);
}
sub int_check {
my $self = shift;
$self->{key} = shift;
$self->{value} = shift;
$self->_del_blanks_end_began();
$self->{value} = $self->{value} eq 'on' ? '1' : '0';
$self->_add_all_fields();
return $self->{value} if (wantarray);
return $self->{value};
}
sub one_die {
my $self = shift;
$self->{key} = shift;
$self->{value} = shift;
$self->_del_blanks_end_began();
$self->_add_all_fields();
if (!$self->{value} == 1) {
$self->_add_bad_fields();
$self->{value} = undef;
}
return $self->{value} if (defined wantarray);
}
sub zero_die {
my $self = shift;
$self->{key} = shift;
$self->{value} = shift;
$self->_del_blanks_end_began();
$self->_add_all_fields();
if (!$self->{value} == 0) {
$self->_add_bad_fields();
$self->{value} = undef;
}
return $self->{value} if (defined wantarray);
}
sub exist_die {
my $self = shift;
$self->{key} = shift if @_;
$self->{value} = shift if @_;
$self->_add_all_fields();
if (! $self->{value}) {
$self->_add_bad_fields();
$self->{value} = undef;
$self->{key} = undef;
}
return $self->{value} if (wantarray);
return $self;
}
####
# Out fields all and bad
###
sub out_all {
my $self = shift;
if ( defined $self->{all_arrey_out} && $self->all_fields_type eq 'arrey') {
return $self->{all_arrey_out};
}
if ( defined $self->{all_hash_out} && $self->all_fields_type eq 'hash' ) {
return $self->{all_hash_out};
}
}
sub out_bad {
my $self = shift;
if ( defined @{ $self->{bad_arrey_out} } && $self->bad_fields_type eq 'arrey') {
return $self->{bad_arrey_out};
}
if ( defined $self->{bad_hash_out} && $self->bad_fields_type eq 'hash' ) {
return $self->{bad_hash_out};
}
}
sub error_valid {
my $self = shift;
if ( $self->{bad_arrey_out} || $self->{bad_hash_out} ) {
return 1;
} else {
return undef;
}
}
1;