Блог And-rey.ru Блог And-rey.ru Блог And-rey.ru
Логин:
Регистрация Пароль:

Начало / Начало / ICQhistory.pl


And-rey:ICQhistory.pl (19.07.10 17:24)
  
Perl
  1. #!C:\Perl64\bin\perl.exe -w
  2.  
  3. #************************************************************************
  4. # Чтение файла истории ICQ v 0.1 (19.07.2010г.)
  5. #
  6. #************************************************************************
  7.  
  8. use strict;
  9. #use CGI::Carp qw(fatalsToBrowser);
  10. #use Data::Dump qw(dump);
  11. use CGI ':standard';
  12. use DBI;
  13.  
  14. my ($dbfile, $dbh, $sth, $sql, @text, @colors, $Users);
  15.  
  16. $dbfile = 'Messages.qdb'; # файл ICQ history
  17. @colors = ('your', 'stra');
  18.  
  19.  
  20. $dbh = DBI->connect("dbi:SQLite:dbname=$dbfile","","");
  21.  
  22. if (param('userId') =~ /^\d+$/) {
  23.    
  24.     my $userId = param('userId');
  25.     my $gmtl = (localtime())[2] - (gmtime())[2];
  26.     my $tt = 2415018.5 + ($gmtl / 24); # хм... http://en.wikipedia.org/wiki/Julian_day
  27.     $sql = "SELECT strftime('%d.%m.%Y', m.date+$tt), strftime('%H:%M', m.date+$tt), m.fromUser, m.subject
  28.            FROM Messages m INNER JOIN Participants p ON m.participantsHash = p.participantsHash
  29.            WHERE m.fromUser = '$userId' OR p.userId = '$userId'";
  30.     $sth = $dbh->prepare(qq{ $sql });
  31.     $sth->execute();
  32.     my (%unic1, %unic2);
  33.     while (my ($date, $time, $fromUser, $subject) = $sth->fetchrow_array()) {
  34.         my $dates = my $times = ' ';
  35.         $dates = $date and $unic1{$date} = 1 and %unic2 = () unless exists $unic1{$date};
  36.         $times = $time and $unic2{$time} = 1 unless exists $unic2{$time};
  37.         my $color = ($fromUser) ? $colors[1] : $colors[0];
  38.         $subject =~ s/(?:\n|\r\n)/<br \/>/g;
  39.         push @text, td([$dates, $times, span({-class=>$color}, $subject)]);
  40.     }
  41.     ($Users) = $dbh->selectrow_array("SELECT name FROM Users WHERE userId = '$userId'");
  42.     $Users = " - $Users ($userId)";
  43.    
  44. } else {
  45.    
  46.     $sql = "SELECT userId, name FROM Users";
  47.     $sth = $dbh->prepare(qq{ $sql });
  48.     $sth->execute();
  49.     while (my ($userId, $name) = $sth->fetchrow_array()) {
  50.         push @text, td([a({-href=>"?userId=$userId"}, $userId), $name]);
  51.     }
  52.    
  53. }
  54.  
  55. $sth->finish();
  56. $dbh->disconnect();
  57.  
  58.  
  59. my $newStyle = <<END;
  60.     .your { color: green; }
  61.     .stra { color: blue; }
  62.     td { border-bottom: 1px solid #A52A2A; }
  63. END
  64.  
  65. print header(-charset => "UTF-8"),
  66.       start_html(-title=>"ICQ History", -style=>{-code=>$newStyle}),
  67.       h3(a({-href=>$ENV{'SCRIPT_NAME'}}, "ICQ History"), $Users),
  68.       table({-border=>0}, Tr([@text]) ),
  69.       end_html;
  70.  

 




    <Ответить>
    Имя:
    Тема:*
    Сообщение:[b] [i] [u] [s] [sub] [sup] [left] [center] [right] [justify] [img] [url] [youtube]   [help]
    *
     

     

    Я сделаю свой блог — с блэкджеком и шлюхами!

    2006-2012, CC-BY: Andrey A.