######################################################## # FILES ######################################################## sub zip_this_button { my ($t) = @_; return if ($USER == -1); return if (check_key($t->{display}, "no-zip-button")); return if (check_key($t->{display}, "nfl")); if ($t->{zipped} == -1) { print qq!
!; my $zip = retrieve_zip_mechanism($t); if ($zip != -1) { print qq!A ZIP OF THESE FILES IS AVAILABLE:
$zip
!; } else { print qq!FOLDER ARCHIVAL IN PROGRESS
!; print qq!CLICK HERE IN A MOMENT
!; } print qq!
\n!; } elsif ($t->{zipped} == 0 && ($t->{files} > 10 || ($t->{files} > 3 && $t->{size} < 160*1024*1024))) { onebutton($t->{id}, "zip", "ZIP THESE FILES"); } elsif ($t->{zipped} == 1) { my $zipfile = generate_zip_filename($t); if (! -e qq!$data_path/$t->{id}/$zipfile!) { update_thread_zipped($t->{id}, 0); onebutton($t->{id}, "zip", "ZIP THESE FILES"); } else { print qq!
!; print qq!A ZIP OF THESE FILES IS AVAILABLE:
$zipfile
!; print qq!
\n!; } } } sub retrieve_zip_mechanism { my ($t) = @_; my $zipfile = generate_zip_filename($t); if (-e qq!$data_path/$t->{id}/$zipfile!) { my @stats = stat(qq!$data_path/$t->{id}/$zipfile!); my $size = $stats[7]; my $date = $stats[9]; add_file($t->{id}, $t->{username}, $zipfile, $size, $date); update_thread_zipped($t->{id}, 1); update_thread_size($t->{id}, $t->{size}); system($CHMOD_PATH, "644", "$data_path/$t->{id}/$zipfile"); $t->{zipped} = 1; return $zipfile; } return -1; } sub generate_zip_filename { my ($t) = @_; my $cleantitle = $t->{title}; $cleantitle =~ s/\W//g; $cleantitle =~ s/^\s+//; $cleantitle =~ s/\s+$//; return qq($cleantitle.zip); } sub situate_files { my ($pid, $uname) = @_; my ($filename, $size, $date); my $newfilename; my $totalsize = 0; foreach my $k (keys %$input) { next if ($k !~ /^file/); next if (! -e $temp_path."/".$$input{$k}); $filename = $$input{$k}; if ($filename =~ /temp_$/) { system("$RM_PATH", $temp_path."/".$filename); } else { print $filename if ($DEBUG); if (! -e $data_path."/".$pid) { print "creating $data_path/$pid
\n" if $DEBUG; system("$MKDIR_PATH", $data_path."/".$pid); system("$MKDIR_PATH", $data_path."/".$pid."/.thumb"); system("$CHMOD_PATH", "755", $data_path."/".$pid); system("$CHMOD_PATH", "755", $data_path."/".$pid."/.thumb"); } @stats = stat($temp_path."/".$filename); $size = $stats[7]; $date = $stats[9]; $newfilename = $filename; $newfilename =~ s/temp_//; my $tfile = $newfilename; my $i = 2; while (-e $data_path."/".$pid."/".$tfile) { $tfile = $newfilename; $tfile =~ s/(\....)$/-$i$1/; $i++; } $newfilename = $tfile; system("$MV_PATH", $temp_path."/".$filename, $data_path."/".$pid."/".$newfilename); add_file($pid, $uname, $newfilename, $size, $date); $totalsize += $size; } } update_thread_size($pid); update_thread_zipped($pid, 0); } sub flush_files { foreach my $k (keys %$input) { next if ($k !~ /^file/); next if (! -e $temp_path."/".$input->{$k}); $filename = $input->{$k}; system("$RM_PATH", $temp_path."/".$filename); } } sub file_list { my ($files, $cbox, $whitelist, $skip_images, $sorty) = @_; my $r = 0; my $size = 0; return if ($files == -1); if (!defined($cbox)) { $cbox = 0; } if (!defined($whitelist)) { $whitelist = 0; } if (!defined($skip_images)) { $skip_images = 0; } return if (@$files == $skip_images); if ($DEBUG) { print qq!Printing file list. File ids:!; for (my $i = 0; $i < @$files; $i++) { print $files->[$i]{id}." "; } print qq!

\n\n!; } print < FILES # if ($sorty eq "size") if ($0 !~ /(details|maintain)/) { $sorty = sub { sort {$b->{date} <=> $a->{date}} @_ }; } else { $sorty = sub { sort {lc($a->{filename}) cmp lc($b->{filename})} @_ }; } foreach my $file ($sorty->(@$files)) { next if (($file->{username} ne $USER->{username}) && $file->{private} && !$whitelist && $USER->{ulevel} != 3); next if ($skip_images && $file->{filename} =~ /\.(jpe?g|gif|png)/i); display_file($file, $r, $cbox); $size += $file->{size}; $r = $r ? 0 : 1; } print ''; print ''; print qq!total size: !.hushsize($size, 1, 1).qq!\n\n!; } sub display_file { my ($f, $r, $cbox) = @_; my $color = carbondate($f->{date}); my $checked = 0; my $bright = 0; $checked = check_key($cbox, $f->{id}); if ($DEBUG) { print qq!Displaying file $f->{id}!; print qq! (checked)! if ($checked); print qq!
\n!; } print qq[]; if ($cbox) { print qq!!; } if ($0 !~ /(details|maintain)/) { print qq[go to post >]; } if ((time - $f->{date}) < 150000 || $checked) { print qq[]; } else { print qq[]; } if (length($f->{filename}) > 50) { my $filen = substr $f->{filename}, 0, 47; my $filext = substr $f->{filename}, -4, 4; print qq[$filen..$filext]; } else { print qq[$f->{filename}]; } print qq[]; my ($date, $time) = verbosedatetime($f->{date}); # print qq[]. (get_age($f->{date})), qq[]; print qq[$date]; print qq[ $time]; print qq[], hushsize($f->{size},2), qq[]; print qq[$f->{username} ]; print qq[\n]; } 1;