oc-server3/htdocs/thumbs.php
2012-08-16 21:04:13 +02:00

222 lines
7.1 KiB
PHP

<?php
/***************************************************************************
* For license information see doc/license.txt
*
* Unicode Reminder メモ
***************************************************************************/
// define image paths
$imgurl_404 = 'lang/de/ocstyle/images/thumb/thumb404.gif';
$imgurl_intern = 'lang/de/ocstyle/images/thumb/thumbintern.gif';
$imgurl_extern = 'lang/de/ocstyle/images/thumb/thumbextern.gif';
$imgurl_spoiler = 'lang/de/ocstyle/images/thumb/thumbspoiler.gif';
$imgurl_format = 'lang/de/ocstyle/images/thumb/thumbunknown.gif';
require('./lib2/web.inc.php');
$login->verify();
$uuid = isset($_REQUEST['uuid']) ? $_REQUEST['uuid'] : '';
$debug = isset($_REQUEST['debug']) ? $_REQUEST['debug']+0 : 0;
$showspoiler = isset($_REQUEST['showspoiler']) ? $_REQUEST['showspoiler']+0 : 0;
if (($opt['debug'] & DEBUG_DEVELOPER) != DEBUG_DEVELOPER)
$debug = 0;
$rs = sql("SELECT `local`, `spoiler`, `url`, `thumb_last_generated`, `last_modified`, `unknown_format`, `uuid`, `thumb_url`, `object_type`, `object_id` FROM `pictures` WHERE `uuid`='&1'", $uuid);
$r = sql_fetch_array($rs);
sql_free_result($rs);
if ($r)
{
if ($r['object_type'] == 1)
{
if (sql_value("SELECT COUNT(*) FROM `cache_logs` INNER JOIN `caches` ON `cache_logs`.`cache_id`=`caches`.`cache_id` INNER JOIN `cache_status` ON `caches`.`status`=`cache_status`.`id` WHERE `cache_logs`.`id`='&1' AND (`cache_status`.`allow_user_view`=1 OR `caches`.`user_id`='&2')", 0, $r['object_id'], $login->userid) == 0)
{
if ($debug == 1)
die('Debug: line ' . __LINE__);
else
$tpl->redirect($imgurl_extern);
}
}
else if ($r['object_type'] == 2)
{
if (sql_value("SELECT COUNT(*) FROM `caches` INNER JOIN `cache_status` ON `caches`.`status`=`cache_status`.`id` WHERE `caches`.`cache_id`='&1' AND (`cache_status`.`allow_user_view`=1 OR `caches`.`user_id`='&2')", 0, $r['object_id'], $login->userid) == 0)
{
if ($debug == 1)
die('Debug: line ' . __LINE__);
else
$tpl->redirect($imgurl_extern);
}
}
if ($r['local'] == 0)
if ($debug == 1)
die('Debug: line ' . __LINE__);
else
$tpl->redirect($imgurl_extern);
if (($r['spoiler'] == 1) && ($showspoiler != 1))
if ($debug == 1)
die('Debug: line ' . __LINE__);
else
$tpl->redirect($imgurl_spoiler);
$imgurl = $r['url'];
$urlparts = mb_split('/', $imgurl);
if (!file_exists($opt['logic']['pictures']['dir'] . '/' . $urlparts[count($urlparts) - 1]))
if ($debug == 1)
die('Debug: line ' . __LINE__);
else
$tpl->redirect($imgurl_intern);
// thumb neu erstellen?
$bGenerate = false;
if (strtotime($r['thumb_last_generated']) < strtotime($r['last_modified']))
$bGenerate = true;
if (!file_exists($opt['logic']['pictures']['thumb_dir'] . '/' . mb_substr($urlparts[count($urlparts) - 1], 0, 1) . '/' . mb_substr($urlparts[count($urlparts) - 1], 1, 1) . '/' . $urlparts[count($urlparts) - 1]))
$bGenerate = true;
if ($bGenerate)
{
// Bild erstellen
if ($r['unknown_format'] == 1)
if ($debug == 1)
die('Debug: line ' . __LINE__);
else
$tpl->redirect($imgurl_format);
// ok, mal kucken ob das Dateiformat unterstützt wird
$filename = $urlparts[count($urlparts) - 1];
$filenameparts = mb_split('\\.', $filename);
$extension = mb_strtolower($filenameparts[count($filenameparts) - 1]);
if (mb_strpos(';' . $opt['logic']['pictures']['extensions'] . ';', ';' . $extension . ';') === false)
{
sql("UPDATE `pictures` SET `unknown_format`=1 WHERE `uuid`='&1'", $r['uuid']);
if ($debug == 1)
die('Debug: line ' . __LINE__);
else
$tpl->redirect($imgurl_format);
}
if ($extension == 'jpeg') $extension = 'jpg';
switch ($extension)
{
case 'jpg':
$im = imagecreatefromjpeg($opt['logic']['pictures']['dir'] . '/' . $filename);
break;
case 'gif':
$im = imagecreatefromgif($opt['logic']['pictures']['dir'] . '/' . $filename);
break;
case 'png':
$im = imagecreatefrompng($opt['logic']['pictures']['dir'] . '/' . $filename);
break;
case 'bmp':
require($opt['rootpath'] . 'lib2/imagebmp.inc.php');
$im = imagecreatefrombmp($opt['logic']['pictures']['dir'] . '/' . $filename);
break;
}
if ($im == '')
{
sql("UPDATE `pictures` SET `unknown_format`=1 WHERE `uuid`='&1'", $r['uuid']);
if ($debug == 1)
die('Debug: line ' . __LINE__);
else
$tpl->redirect($imgurl_format);
}
$imheight = imagesy($im);
$imwidth = imagesx($im);
if ($r['object_type'] == 1)
{
$thumb_max_height = $opt['logic']['pictures']['thumb_max_height']/3;
$thumb_max_width = $opt['logic']['pictures']['thumb_max_width']/3;
}
else
{
$thumb_max_height = $opt['logic']['pictures']['thumb_max_height'];
$thumb_max_width = $opt['logic']['pictures']['thumb_max_width'];
}
if (($imheight > $thumb_max_height) || ($imwidth > $thumb_max_width))
{
if ($imheight > $imwidth)
{
$thumbheight = $thumb_max_height;
$thumbwidth = $imwidth * ($thumbheight / $imheight);
}
else
{
$thumbwidth = $thumb_max_width;
$thumbheight = $imheight * ($thumbwidth / $imwidth);
}
}
else
{
$thumbwidth = $imwidth;
$thumbheight = $imheight;
}
// Thumb erstellen und speichern
$thumbimage = imagecreatetruecolor($thumbwidth, $thumbheight);
imagecopyresampled($thumbimage, $im, 0, 0, 0, 0, $thumbwidth, $thumbheight, $imwidth, $imheight);
// verzeichnis erstellen
if (!file_exists($opt['logic']['pictures']['thumb_dir'] . '/' . mb_substr($filename, 0, 1)))
mkdir($opt['logic']['pictures']['thumb_dir'] . '/' . mb_substr($filename, 0, 1));
if (!file_exists($opt['logic']['pictures']['thumb_dir'] . '/' . mb_substr($filename, 0, 1) . '/' . mb_substr($filename, 1, 1)))
mkdir($opt['logic']['pictures']['thumb_dir'] . '/' . mb_substr($filename, 0, 1) . '/' . mb_substr($filename, 1, 1));
$savedir = $opt['logic']['pictures']['thumb_dir'] . '/' . mb_substr($filename, 0, 1) . '/' . mb_substr($filename, 1, 1);
switch ($extension)
{
case 'jpg':
imagejpeg($thumbimage, $savedir . '/' . $filename);
break;
case 'gif':
imagegif($thumbimage, $savedir . '/' . $filename);
break;
case 'png':
imagepng($thumbimage, $savedir . '/' . $filename);
break;
case 'bmp':
imagebmp($thumbimage, $savedir . '/' . $filename);
break;
}
sql("UPDATE `pictures` SET `thumb_last_generated`=NOW(), `thumb_url`='&1' WHERE `uuid`='&2'", $opt['logic']['pictures']['thumb_url'] . '/' . mb_substr($filename, 0, 1) . '/' . mb_substr($filename, 1, 1) . '/' . $filename, $r['uuid']);
if ($debug == 1)
die($opt['logic']['pictures']['thumb_url'] . '/' . $filename);
else
$tpl->redirect($opt['logic']['pictures']['thumb_url'] . '/' . mb_substr($filename, 0, 1) . '/' . mb_substr($filename, 1, 1) . '/' . $filename);
}
else
{
if ($debug == 1)
die($r['thumb_url']);
else
$tpl->redirect($r['thumb_url']);
}
}
else
{
if ($debug == 1)
die('Debug: line ' . __LINE__);
else
$tpl->redirect($imgurl_404);
}
?>