$maxlen) { $line1 = utf8_substr($line1, 0, $maxlen); $numchars = $maxlen; } $line1 = reverseText($line1); if ($line2) { $numchars2 = utf8_strlen($line2); if ($numchars2 > $maxlen) { $line2 = utf8_substr($line2, $maxlen); $numchars2 = $maxlen; } if ($numchars2 > $numchars) { $numchars = $numchars2; } $line2 = reverseText($line2); } $type = isImageTypeSupported($type); if ($type) { // width of image is based on the number of characters $width = ($numchars+1) * 6.5; $height = 60; $im = imagecreatetruecolor($width, $height); /* Create a black image */ $bgc = imagecolorallocate($im, 255, 255, 255); /* set background color */ $tc = imagecolorallocate($im, 0, 0, 0); /* set text color */ imagefilledrectangle($im, 2, 2, $width-4, $height-4, $bgc); /* create a rectangle, leaving 2 px border */ imagestring($im, 2, 5, 5, $line1, $tc); if ($line2) { imagestring($im, 2, 5, 30, $line2, $tc); } // if we are using mod rewrite, there will be no error status. be sure to set it header('HTTP/1.0 404 Not Found'); header('Status: 404 Not Found'); header('Content-Type: image/'.$type); $imSendFunc = 'image'.$type; $imSendFunc($im); imagedestroy($im); } else { // output a standard html string // if we are using mod rewrite, there will be no error status. be sure to set it header('HTTP/1.0 404 Not Found'); header('Status: 404 Not Found'); echo "
\n"; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo "\n| GEDCOM | ', WT_GEDCOM, ' | |
| MEDIA_DIRECTORY_LEVELS | ', $MEDIA_DIRECTORY_LEVELS, ' | |
| $controller->pid | ', $controller->pid, ' | |
| Requested URL | ', urldecode($_SERVER['REQUEST_URI']), ' | |
| serverFilename | ', $serverFilename, ' | |
| controller->record->getFilename() | ', $controller->record->getFilename(), ' | this is direct from the gedcom |
| controller->record->getLocalFilename() | ', $controller->record->getLocalFilename(), ' | |
| controller->record->getServerFilename() | ', $controller->record->getServerFilename(), ' | |
| controller->record->fileExists() | ', $controller->record->fileExists(), ' | |
| mimetype | ', $mimetype, ' | |
| disposition | ', $disposition, ' | |
| controller->record->getFilesize() | ', $controller->record->getFilesize(), ' | cannot use this |
| filesize | ', @filesize($serverFilename), ' | this is right |
| controller->record->getThumbnail() | ', $controller->record->getThumbnail(), ' | |
| controller->record->canDisplayDetails() | ', $controller->record->canDisplayDetails(), ' | |
| controller->record->getFullName() | ', $controller->record->getFullName(), ' | |
| basename($serverFilename) | ', basename($serverFilename), ' | |
| filetime | ', $filetime, ' | |
| filetimeHeader | ', $filetimeHeader, ' | |
| if_modified_since | ', $if_modified_since, ' | |
| if_none_match | ', $if_none_match, ' | |
| etag | ', $etag, ' | |
| expireHeader | ', $expireHeader, ' | |
| protocol | ', $protocol, ' | |
| SHOW_NO_WATERMARK | ', $SHOW_NO_WATERMARK, ' | |
| WT_USER_ACCESS_LEVEL | ', WT_USER_ACCESS_LEVEL, ' | |
| usewatermark | ', $usewatermark, ' | |
| generatewatermark | ', $generatewatermark, ' | |
| watermarkfile | ', $watermarkfile, ' | |
| type | ', $type, ' | |
| WATERMARK_THUMB | ', $WATERMARK_THUMB, ' | |
| SAVE_WATERMARK_THUMB | ', $SAVE_WATERMARK_THUMB, ' | |
| SAVE_WATERMARK_IMAGE | ', $SAVE_WATERMARK_IMAGE, ' |
'; print_r (@getimagesize($serverFilename)); print_r ($controller->record); print_r (WT_GEDCOM); echo ''; phpinfo(); exit; } // do the real work here // add caching headers. allow browser to cache file, but not proxy if (!$debug_forceImageRegen) { header("Last-Modified: " . $filetimeHeader); header('ETag: "'.$etag.'"'); header("Expires: ".$expireHeader); header("Cache-Control: max-age=".$expireOffset.", s-maxage=0, proxy-revalidate"); } // if this file is already in the user's cache, don't resend it // first check if the if_modified_since param matches if (($if_modified_since == $filetimeHeader) && !$debug_forceImageRegen) { // then check if the etag matches if ($if_none_match == $etag) { header($protocol." 304 Not Modified"); exit; } } // reset the 404 error header($protocol." 200 OK"); header("Status: 200 OK"); // send headers for the image if (!$debug_watermark) { header("Content-Type: " . $mimetype); header('Content-Disposition: '.$disposition.'; filename="'.basename($serverFilename).'"'); } if ($generatewatermark) { // generate the watermarked image $imCreateFunc = 'imagecreatefrom'.$type; $im = @$imCreateFunc($serverFilename); if ($im) { if ($debug_verboseLogging) AddToLog("Media Firewall log: >about to watermark< file >".$serverFilename."< (".getImageInfoForLog($serverFilename).") memory used: ".memory_get_usage(), 'media'); $im = applyWatermark($im); if ($debug_verboseLogging) AddToLog("Media Firewall log: >watermark complete< file >".$serverFilename."< (".getImageInfoForLog($serverFilename).") memory used: ".memory_get_usage(), 'media'); $imSendFunc = 'image'.$type; // save the image, if preferences allow if ((($which=='thumb') && $SAVE_WATERMARK_THUMB) || (($which=='main') && $SAVE_WATERMARK_IMAGE)) { // make sure the directory exists if (!is_dir(dirname($watermarkfile))) { mkdirs(dirname($watermarkfile)); } // save the image $imSendFunc($im, $watermarkfile); } // send the image $imSendFunc($im); imagedestroy($im); if ($debug_verboseLogging) AddToLog("Media Firewall log: >done with < file >".$serverFilename."< (".getImageInfoForLog($serverFilename).") memory used: ".memory_get_usage(), 'media'); exit; } else { // this image is defective. log it AddToLog("Media Firewall error: >".WT_I18N::translate('This media file is broken and cannot be watermarked')."< in file >".$serverFilename."< (".getImageInfoForLog($serverFilename).") memory used: ".memory_get_usage(), 'media'); // set usewatermark to false so image will simply be passed through below $usewatermark = false; } } // pass the image through without manipulating it if ($usewatermark) { // the stored watermarked image is good, lets use it $serverFilename = $watermarkfile; } // determine filesize of image (could be original or watermarked version) $filesize = filesize($serverFilename); // set content-length header, send file header("Content-Length: " . $filesize); // Some servers disable fpassthru() and readfile() if (function_exists('readfile')) { readfile($serverFilename); } else { $fp=fopen($serverFilename, 'rb'); if (function_exists('fpassthru')) { fpassthru($fp); } else { while (!feof($fp)) { echo fread($fp, 65536); } } fclose($fp); }