#!/usr/local/bin/perl # common.pm # qualquer parada que seja impressa na tela tem que vir desse modulo! # v0.99 28 fev 2006 package common; require Exporter; @ISA = qw(Exporter); @EXPORT = qw(); @EXPORT_OK = qw(@months @week_days); ################################################################################ @months = qw(Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro); @week_days = qw(Domingo Segunda Terça Quarta Quinta Sexta Sábado); ($sec, $min, $hr, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time); $host_ip = "127.0.0.1"; ################################################################################ sub sendmail { my ($to, $subject, @msg) = @_; my ($mailprog) = "/usr/sbin/sendmail"; open (MAIL, "|$mailprog -t"); if ($to =~ /[\r\n,;\'"]/) { dienice("HTTP error, please try again");} if ($subject =~ /[\r\n,;\'"]/) {dienice("HTTP error, please try again");} print MAIL "To: $to\n"; print MAIL "From: hpg\@locazip.com.br\n"; print MAIL "Subject: $subject\n\n"; print MAIL <connect("dbi:mysql:locazip:mysql.locazip.com.br", "locazip", "locaz1p") or dienice ("Can´t connect: $DBI::errstr"); #$dbh = DBI->connect("dbi:mysql:locazip:127.0.0.1", "", "") or dienice ("Can´t connect: $DBI::errstr"); return ($dbh); } ################################################################################ sub parse { read(STDIN,$temp,$ENV{'CONTENT_LENGTH'}); @pairs=split(/&/,$temp); foreach $item(@pairs) { ($key,$content)=split(/=/,$item,2); $content=~tr/+/ /; $content=~s/%(..)/pack("c",hex($1))/ge; $content=~s/\t/ /g; $fields{$key}=$content; } return %fields; } sub parseget { my %getfields; @values = split (/&/, $ENV{'QUERY_STRING'}); foreach $i (@values) { ($varname, $vardata) = split (/=/,$i); $vardata=~tr/+/ /; $vardata=~s/%(..)/pack("c",hex($1))/ge; $getfields{$varname}=$vardata; } return %getfields; } ################################################################################ sub dienice { my $called_function = (caller(1))[3]; my ($msg) = @_; print <

ERRO!

$msg

Clique em voltar em concerte o erro. $called_functionw
EOF exit; } ################################################################################ sub header { use CGI::Carp qw(fatalsToBrowser); print "$_[2]" if ($_[2]); #Used for cookies print "$_[3]" if ($_[3]); print "$_[4]" if ($_[4]); print "Content-type: text/html\n\n"; print "$_[0]"; print "" if ($_[1]); print ""; print ""; print ""; print "\n"; print "\n"; } sub show_file { open (HEAD, "$_[0]") or die ("Can't open $_[0] ($!)\n"); while () {print "$_\n";} close (HEAD); } sub get_file { undef $/; my $file; open (HEAD, "$_[0]") or dienice ("Can't open $_[0] ($!)\n"); while () {$file .= "$_\n";} close (HEAD); return ($file); } ################################################################################ sub read_cookies { my %cookie = (); my @cookies = split (/;/, $ENV{'HTTP_COOKIE'}); foreach my $i (@cookies) { my ($c_name, $c_value) = split(/=/,$i); $c_name =~ s/ //; $cookie{$c_name} = "$c_value"; } return %cookie; } ################################################################################ sub paginas_por_categoria { my $dbh = dbiconnect(); my $sth = $dbh->prepare("SELECT * FROM hp_categorias ORDER BY categoria") or die ("Error"); $sth->execute() or die ("$DBI::errstr"); my $output; my $total; while (my $h = $sth->fetchrow_hashref) { $output .= "{id}\">$h->{categoria}
"; #$categorias{$h->{categoria}} = $h->{id}; #print "$h->{categoria}, $h->{id}\n"; } #$sth = $dbh->prepare("SELECT 1 FROM hp WHERE categoria = (?)") or die ("Error"); #foreach my $key (sort {$a cmp $b} keys %categorias) { # my $rv = $sth->execute($categorias{$key}) or die ("$DBI::errstr"); # $total += $rv; # $output .= "$key :: $rv
"; #} #$output .="Total = $total\n"; return ($output); } sub ultimas_paginas { my $num_paginas = $_[0]; dienice("Favoe entre com o numero de paginas a serem listadas") unless ($num_paginas); my $dbh = dbiconnect(); my $query = "SELECT html, titulo FROM hp ORDER BY quando desc LIMIT $num_paginas"; my $sth = $dbh->prepare($query) or die ("Error"); my $rv = $sth->execute() or die ("$DBI::errstr"); my $output = "\n"; while (my $h = $sth->fetchrow_hashref) { $output .= "\n"; } $output .= "
{html}.shtml\">$h->{titulo}
\n"; return ($output); } sub paginas_criadas { my $user = $_[0]; my $dbh = dbiconnect(); #Ler Categorias my %categorias = ler_categorias(); $sth = $dbh->prepare("SELECT * FROM hp WHERE id = (?) ORDER BY titulo "); my $rv = $sth->execute($user) or die ("$DBI::errstr"); dienice("Favor entre com um usuário válido") unless ($user); my $output; if ($rv eq "0E0") { $output = "Ainda não existem páginas criadas.\n"; } else { $output = "\n"; $output .= "\n"; while (my $h = $sth->fetchrow_hashref) { $output .= ""; $output .= "\n"; $output .= "\n"; my $fo = mudar_cat($h->{html}, $h->{categoria}); $output .= "\n"; $output .= "\n"; $output .= ""; } $output .= "
TítuloURLCategoriaFunções
$h->{titulo}{html}.shtml\">$h->{html}$fo{html}\">Editar ::"; $output .= "{html}\" onClick=\"return confirm('Deseja realmente apagar a página $h->{titulo}')\">Apagar ::"; #$output .= "Palavras Chaves
\n"; #private sub mudar_cat { my $html = $_[0]; my $this_cat = $_[1]; my $output = "
"; $output .= "\n"; $output .= "
"; return $output; } } return ($output); } ################################## sub ler_categorias { my %categorias; my $dbh = common::dbiconnect; my $sth = $dbh->prepare("SELECT * FROM hp_categorias ORDER BY categoria"); $sth->execute() or dienice ("$DBI::errstr"); while (my $h = $sth->fetchrow_hashref) {$categorias{$h->{id}} = $h->{categoria};} return (%categorias); } ################################## sub register_movement { my ($user_id, $ip, $cat) = @_; my $dbh = dbiconnect(); #Ler Categorias my %categorias = ler_categorias(); $sth = $dbh->prepare("INSERT INTO followup VALUES (?,?,NOW(),?)"); $sth->execute($user_id, $ip, $cat) or die ("$DBI::errstr"); }