#!/usr/bin/perl
# Pixmark module. Last updated: 27/12/07 23:50:04

use DBI;
require "environment.dat";

&db_connect_and_statuscheck('main');
#&getquery;

use CGI;
#if ($MAX_SIZE_UPLOAD) { $CGI::POST_MAX=1024 * $MAX_SIZE_UPLOAD; } # Ko
# File sizes are limited to 25K, larger files will return an 'Internal Server Error'

my $query = new CGI;

&action;
exit;
sub action {#######################################
	if ($query->param('action') eq "upload") {&mode_upload;}
	else {&mode_avanpage;}
}


sub mode_avanpage {#####################################
print << "[END]";
Content-Type: text/html\n\n
<html><head><title>Pixmark</title>
<style type="text/css">
#kvr {FONT-SIZE: 10px; COLOR: #336600; FONT-FAMILY: Tahoma, Verdana, Arial; FONT-WEIGHT: normal}
#sha {FONT-SIZE: 11px; COLOR: #99cc00; FONT-FAMILY: Tahoma, Verdana, Arial; FONT-WEIGHT: normal}
#shb {FONT-SIZE: 11px; COLOR: #333300; FONT-FAMILY: Tahoma, Verdana, Arial; FONT-WEIGHT: normal}
A {FONT-SIZE: 10px; COLOR: #333300; FONT-FAMILY: Tahoma, Verdana, Arial; TEXT-DECORATION: none; FONT-WEIGHT: bold;  PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px;}
TABLE {PADDING-LEFT: 0px; cursor: default;}
INPUT {FONT-SIZE: 10px; COLOR: #336600; FONT-FAMILY: Tahoma, Verdana, Arial; FONT-WEIGHT: normal;}
</STYLE></HEAD>
<BODY bgColor=#ECF4E4 leftMargin=0 rightMargin=0 topMargin=0 marginheight=10 marginwidth=10><TABLE cellSpacing=5 width=460 border=0 align=center><tr><td colspan=2><img src=gfx/s.gif width=460 height=1></td></tr>
<FORM action=upload.cgi name=upload METHOD=POST ENCTYPE="multipart/form-data">
<tr><td align=left id=kvr>Пользовательский файл*:
<td><input type=file name=entry><input type=hidden name="action" value="upload"><input type=hidden name=kid value=0><input type=\"Submit\" value=\"Загрузить\" id=shb>
<tr><td align=left id=kvr>Наименование:
<td><input type=text name=text1>
<tr><td align=left id=kvr>Краткое описание:
<td><input type=text name=text2>
<tr><td align=left id=kvr>Не отображать в каталоге<br>(для использования необходимо<br>помнить идентификатор):
<td><input type=checkbox name=shadow>

<tr><td width=450 height=1 colspan=2><img src=gfx/s.gif widht=1 height=1></td></tr>

<tr><td width=450 bgcolor=#cceecc height=1 colspan=2><img src=gfx/s.gif></td></tr>
<tr><td colspan=2 align=left id=kvr>* Обязательное поле. Файл должен быть в формате GIF. Размер файла - не более 32 Кb.<br>Рекомендуется ограничение палитры в 64 цвета.</td></tr>

<SCRIPT type=text/javascript>
document.forms["upload"].kid.value=parent.document.forms["builddata"].kid.value;
</SCRIPT>
</form>
</body></html>
[END]

}


sub mode_upload {
print << "[END]";
Content-Type: text/html\n\n
<html><head><title>Pixmark</title>
<style type="text/css">
#kvr {FONT-SIZE: 10px; COLOR: #336600; FONT-FAMILY: Tahoma, Verdana, Arial; FONT-WEIGHT: normal}
#sha {FONT-SIZE: 11px; COLOR: #99cc00; FONT-FAMILY: Tahoma, Verdana, Arial; FONT-WEIGHT: normal}
#shb {FONT-SIZE: 11px; COLOR: #333300; FONT-FAMILY: Tahoma, Verdana, Arial; FONT-WEIGHT: normal}
A {FONT-SIZE: 10px; COLOR: #333300; FONT-FAMILY: Tahoma, Verdana, Arial; TEXT-DECORATION: none; FONT-WEIGHT: bold;  PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px;}
TABLE {PADDING-LEFT: 0px; cursor: default;}
INPUT {FONT-SIZE: 10px; COLOR: #336600; FONT-FAMILY: Tahoma, Verdana, Arial; FONT-WEIGHT: normal;}
</STYLE></HEAD>
<BODY bgColor=#ECF4E4 leftMargin=0 rightMargin=0 topMargin=0 marginheight=10 marginwidth=10><TABLE cellSpacing=5 width=460 border=0 align=center><tr><td colspan=2><img src=gfx/s.gif width=460 height=1></td></tr>
<tr><td align=left colspan=2><div id=kvr>
[END]

if (&Check_KCAPTCHA_lite($query->param('kid')) ne 'True'){ # проверка активного ID для изображения
	print "Ошибка. Пожалуйста, обновите страницу в браузере.";}
		else {

 $file = $query->param("entry"); 
 $filehandle = $query->upload("entry");
 if ($query->param('shadow') eq 'on') {$shadow = 'True';} else {$shadow = '';}
 $errfile=0;

if ($query->uploadInfo($filehandle)->{'Content-Type'} ne 'image/gif') {print "<font color=#ff0000>Загружаемый файл имеет неверный формат (необходим GIF)</font><br>"; $error=1;}
if (-s($filehandle) > 32768) {print "<font color=#ff0000>Загружаемый файл превышает допустимый размер (32KB)</font><br>"; $error=1;}

if ($error != 1){	   
	   
	$filename="/home/p/pixmark/pixmark.ru/public_html/gfx_frames/users_".$query->param('kid').".gif";
	   
	if (-e($filename)){print "<font color=#ff0000>Ошибка сохранения фaйла. Пожалуйста, обновите страницу в браузере.</font>"}
	  else {
		open (OUTFILE,">$filename") or $errfile=1;
		if ($errfile == 1) {print "<font color=#ff0000>Ошибка сохранения фaйла. Пожалуйста, обновите страницу в браузере.</font>";}
		  else {binmode OUTFILE; while ($bytesread = read($filehandle, $buffer, 1024)) { print OUTFILE $buffer; } 
		    close (OUTFILE); 

			$sth = $dbh->prepare("DELETE FROM kcaptcha WHERE kid=".$query->param('kid')); # удаляем ключ (kid) из базы
			$sth->execute();
			#добавляем изображение в базу:
			$sql="INSERT INTO gfxdescr (gfxtype,main_section,sub_section,sub_section_txt,sub_section2,sub_section2_txt,object,object_txt,object_txt2,shadow) values ('background','users','".&get_date('wo_day')."','".&get_date('wo_day')."','users','users','users_".$query->param('kid')."','".$query->param('text1')." ','".$query->param('text2')." ','".$shadow." ');";
			$sth = $dbh->prepare($sql);
			$rv = $sth->execute();
			if ($rv!=1){writelog("trouble with insert new users_gfx descr!"); print "Ошибка сохранения фaйла. Пожалуйста, обновите страницу в браузере.";} else {
			
			print "Пользовательское изображение успешно загружено. ID: <b>users_",$query->param('kid'),"</b><br>Для загрузки очередного файла/создания юзербара обновите страницу в браузере.";
		}
		  }
	   }
	}
		else {
			
	print << "[END]";
<FORM action=upload.cgi name=upload METHOD=POST ENCTYPE="multipart/form-data">
<tr><td align=left id=kvr>Пользовательский файл*:
<td><input type=file name=entry><input type=hidden name="action" value="upload"><input type=hidden name=kid value=0><input type=\"Submit\" value=\"Загрузить\" id=shb>
<tr><td align=left id=kvr>Наименование:
<td><input type=text name=text1>
<tr><td align=left id=kvr>Краткое описание:
<td><input type=text name=text2>
<tr><td align=left id=kvr>Не отображать в каталоге<br>(для использования необходимо<br>помнить идентификатор):
<td><input type=checkbox name=shadow>

<tr><td width=450 height=1 colspan=2><img src=gfx/s.gif widht=1 height=1></td></tr>

<tr><td width=450 bgcolor=#cceecc height=1 colspan=2><img src=gfx/s.gif></td></tr>
<tr><td colspan=2 align=left id=kvr>* Обязательное поле. Файл должен быть в формате GIF. Размер файла - не более 32 Кb.<br>Рекомендуется ограничение палитры в 64 цвета.</td></tr>

<SCRIPT type=text/javascript>
document.forms["upload"].kid.value=parent.document.forms["builddata"].kid.value;
</SCRIPT>
</form>
[END]
		}
 }
 
print "</body></html>";
}


sub Check_KCAPTCHA_lite { # проверка активного kid. Параметры:
		# $_[0] - идентификатор kcaptcha;
    # Возвращается 'True'/'NoMore'
#Готовим запрос
   $sth = $dbh->prepare("SELECT * FROM kcaptcha WHERE kid=$_[0]");
   $sth->execute();
#   $ctable = $sth->fetchall_arrayref;
  if ($sth->rows == 1){return 'True';}               # должен вернуть только одну строку!
   return 'NoMore'; # если пошло наперекосяк
}
sub get_date { # Формируем и возвращаем текущую (localtime) дату в оычной формате
    # $_[0] - что возвращать
    if ($_[0] ne "wo_day" and $_[0] ne ""){	($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($_[0]);}
	  else {($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($runtime);}
	if ($hour < 10) { $hour = "0$hour"; }
	if ($min < 10) { $min = "0$min"; }
	if ($sec < 10) { $sec = "0$sec"; }
	$mon++;
	if ($mon < 10) { $mon = "0$mon"; }
	$year=$year+1900;
  if ($_[0] eq "wo_day") {return "$mon.$year"; }
  elsif ($_[0] ne ""){return "$hour:$min:$sec, $mday.$mon.$year";}        # строка для теста!!!!
  else {return "$mday.$mon.$year";}
}
