2009-09-20 02:53:15 +00:00
< ? php
2014-06-24 19:51:22 +00:00
if ( ! defined ( 'TINYIB_BOARD' )) {
die ( '' );
}
2009-09-20 02:53:15 +00:00
2014-07-20 19:12:00 +00:00
$posts_sql = " CREATE TABLE ` " . TINYIB_DBPOSTS . " ` (
`id` mediumint ( 7 ) unsigned NOT NULL auto_increment ,
`parent` mediumint ( 7 ) unsigned NOT NULL ,
`timestamp` int ( 20 ) NOT NULL ,
`bumped` int ( 20 ) NOT NULL ,
`ip` varchar ( 15 ) NOT NULL ,
`name` varchar ( 75 ) NOT NULL ,
`tripcode` varchar ( 10 ) NOT NULL ,
`email` varchar ( 75 ) NOT NULL ,
`nameblock` varchar ( 255 ) NOT NULL ,
`subject` varchar ( 75 ) NOT NULL ,
`message` text NOT NULL ,
`password` varchar ( 255 ) NOT NULL ,
`file` varchar ( 75 ) NOT NULL ,
`file_hex` varchar ( 75 ) NOT NULL ,
`file_original` varchar ( 255 ) NOT NULL ,
`file_size` int ( 20 ) unsigned NOT NULL default '0' ,
`file_size_formatted` varchar ( 75 ) NOT NULL ,
`image_width` smallint ( 5 ) unsigned NOT NULL default '0' ,
`image_height` smallint ( 5 ) unsigned NOT NULL default '0' ,
`thumb` varchar ( 255 ) NOT NULL ,
`thumb_width` smallint ( 5 ) unsigned NOT NULL default '0' ,
`thumb_height` smallint ( 5 ) unsigned NOT NULL default '0' ,
2014-10-17 01:12:52 +00:00
`stickied` tinyint ( 1 ) NOT NULL default '0' ,
`moderated` tinyint ( 1 ) NOT NULL default '1' ,
2014-07-20 19:12:00 +00:00
PRIMARY KEY ( `id` ),
KEY `parent` ( `parent` ),
2014-10-17 23:37:52 +00:00
KEY `bumped` ( `bumped` ),
KEY `stickied` ( `stickied` ),
KEY `moderated` ( `moderated` )
2014-07-26 10:22:53 +00:00
) " ;
2014-07-20 19:12:00 +00:00
$bans_sql = " CREATE TABLE ` " . TINYIB_DBBANS . " ` (
`id` mediumint ( 7 ) unsigned NOT NULL auto_increment ,
`ip` varchar ( 15 ) NOT NULL ,
`timestamp` int ( 20 ) NOT NULL ,
`expire` int ( 20 ) NOT NULL ,
`reason` text NOT NULL ,
PRIMARY KEY ( `id` ),
KEY `ip` ( `ip` )
2014-07-26 10:22:53 +00:00
) " ;
2014-07-20 19:12:00 +00:00
2009-09-20 02:53:15 +00:00
function cleanString ( $string ) {
$search = array ( " < " , " > " );
$replace = array ( " < " , " > " );
2014-06-24 19:51:22 +00:00
2009-09-20 02:53:15 +00:00
return str_replace ( $search , $replace , $string );
}
2010-11-10 10:34:41 +00:00
function plural ( $singular , $count , $plural = 's' ) {
if ( $plural == 's' ) {
2014-06-24 19:51:22 +00:00
$plural = $singular . $plural ;
}
return ( $count == 1 ? $singular : $plural );
2010-11-10 10:34:41 +00:00
}
2009-09-20 02:53:15 +00:00
function threadUpdated ( $id ) {
rebuildThread ( $id );
rebuildIndexes ();
}
2011-08-07 07:24:39 +00:00
function newPost ( $parent = TINYIB_NEWTHREAD ) {
return array ( 'parent' => $parent ,
2014-06-24 19:51:22 +00:00
'timestamp' => '0' ,
'bumped' => '0' ,
'ip' => '' ,
'name' => '' ,
'tripcode' => '' ,
'email' => '' ,
'nameblock' => '' ,
'subject' => '' ,
'message' => '' ,
'password' => '' ,
'file' => '' ,
'file_hex' => '' ,
'file_original' => '' ,
'file_size' => '0' ,
'file_size_formatted' => '' ,
'image_width' => '0' ,
'image_height' => '0' ,
'thumb' => '' ,
'thumb_width' => '0' ,
2014-10-17 01:12:52 +00:00
'thumb_height' => '0' ,
'stickied' => '0' ,
'moderated' => '1' );
2009-09-20 02:53:15 +00:00
}
function convertBytes ( $number ) {
$len = strlen ( $number );
if ( $len < 4 ) {
return sprintf ( " %dB " , $number );
} elseif ( $len <= 6 ) {
2014-06-24 19:51:22 +00:00
return sprintf ( " %0.2fKB " , $number / 1024 );
2009-09-20 02:53:15 +00:00
} elseif ( $len <= 9 ) {
2014-06-24 19:51:22 +00:00
return sprintf ( " %0.2fMB " , $number / 1024 / 1024 );
2009-09-20 02:53:15 +00:00
}
2014-06-24 19:51:22 +00:00
return sprintf ( " %0.2fGB " , $number / 1024 / 1024 / 1024 );
2009-09-20 02:53:15 +00:00
}
function nameAndTripcode ( $name ) {
2010-06-22 07:46:00 +00:00
if ( preg_match ( " /(#|!)(.*)/ " , $name , $regs )) {
2009-09-20 02:53:15 +00:00
$cap = $regs [ 2 ];
$cap_full = '#' . $regs [ 2 ];
2014-06-24 19:51:22 +00:00
2009-09-20 02:53:15 +00:00
if ( function_exists ( 'mb_convert_encoding' )) {
$recoded_cap = mb_convert_encoding ( $cap , 'SJIS' , 'UTF-8' );
if ( $recoded_cap != '' ) {
$cap = $recoded_cap ;
}
}
2014-06-24 19:51:22 +00:00
2009-09-20 02:53:15 +00:00
if ( strpos ( $name , '#' ) === false ) {
$cap_delimiter = '!' ;
} elseif ( strpos ( $name , '!' ) === false ) {
$cap_delimiter = '#' ;
} else {
$cap_delimiter = ( strpos ( $name , '#' ) < strpos ( $name , '!' )) ? '#' : '!' ;
}
2014-06-24 19:51:22 +00:00
2010-06-22 07:46:00 +00:00
if ( preg_match ( " /(.*)( " . $cap_delimiter . " )(.*)/ " , $cap , $regs_secure )) {
2009-09-20 02:53:15 +00:00
$cap = $regs_secure [ 1 ];
$cap_secure = $regs_secure [ 3 ];
$is_secure_trip = true ;
} else {
$is_secure_trip = false ;
}
2014-06-24 19:51:22 +00:00
2009-09-20 02:53:15 +00:00
$tripcode = " " ;
2011-01-08 01:36:00 +00:00
if ( $cap != " " ) { // Copied from Futabally
2009-09-20 02:53:15 +00:00
$cap = strtr ( $cap , " & " , " & " );
$cap = strtr ( $cap , " , " , " , " );
2014-06-24 19:51:22 +00:00
$salt = substr ( $cap . " H. " , 1 , 2 );
2010-06-22 07:46:00 +00:00
$salt = preg_replace ( " /[^ \ .-z]/ " , " . " , $salt );
2014-06-24 19:51:22 +00:00
$salt = strtr ( $salt , " :;<=>?@[ \\ ]^_` " , " ABCDEFGabcdef " );
2009-09-20 02:53:15 +00:00
$tripcode = substr ( crypt ( $cap , $salt ), - 10 );
}
2014-06-24 19:51:22 +00:00
2009-09-20 02:53:15 +00:00
if ( $is_secure_trip ) {
if ( $cap != " " ) {
$tripcode .= " ! " ;
}
2014-06-24 19:51:22 +00:00
2010-12-03 10:11:14 +00:00
$tripcode .= " ! " . substr ( md5 ( $cap_secure . TINYIB_TRIPSEED ), 2 , 10 );
2009-09-20 02:53:15 +00:00
}
2014-06-24 19:51:22 +00:00
2010-06-22 07:46:00 +00:00
return array ( preg_replace ( " /( " . $cap_delimiter . " )(.*)/ " , " " , $name ), $tripcode );
2009-09-20 02:53:15 +00:00
}
2014-06-24 19:51:22 +00:00
2009-09-20 02:53:15 +00:00
return array ( $name , " " );
}
2011-08-07 07:24:39 +00:00
function nameBlock ( $name , $tripcode , $email , $timestamp , $rawposttext ) {
2009-09-22 21:29:27 +00:00
$output = '<span class="postername">' ;
2011-09-06 06:53:37 +00:00
$output .= ( $name == '' && $tripcode == '' ) ? 'Anonymous' : $name ;
2014-06-24 19:51:22 +00:00
2011-09-06 06:53:37 +00:00
if ( $tripcode != '' ) {
2009-09-20 02:53:15 +00:00
$output .= '</span><span class="postertrip">!' . $tripcode ;
}
2014-06-24 19:51:22 +00:00
2009-09-22 21:29:27 +00:00
$output .= '</span>' ;
2014-06-24 19:51:22 +00:00
2011-09-06 06:53:37 +00:00
if ( $email != '' && strtolower ( $email ) != 'noko' ) {
2009-09-20 02:53:15 +00:00
$output = '<a href="mailto:' . $email . '">' . $output . '</a>' ;
}
2009-09-22 21:29:27 +00:00
2011-08-07 07:24:39 +00:00
return $output . $rawposttext . ' ' . date ( 'y/m/d(D)H:i:s' , $timestamp );
2009-09-20 02:53:15 +00:00
}
function writePage ( $filename , $contents ) {
2010-12-03 10:11:14 +00:00
$tempfile = tempnam ( 'res/' , TINYIB_BOARD . 'tmp' ); /* Create the temporary file */
2009-09-20 02:53:15 +00:00
$fp = fopen ( $tempfile , 'w' );
fwrite ( $fp , $contents );
fclose ( $fp );
/* If we aren't able to use the rename function, try the alternate method */
if ( !@ rename ( $tempfile , $filename )) {
copy ( $tempfile , $filename );
unlink ( $tempfile );
}
2014-06-24 19:51:22 +00:00
2009-09-20 02:53:15 +00:00
chmod ( $filename , 0664 ); /* it was created 0600 */
}
function fixLinksInRes ( $html ) {
2014-11-06 11:34:19 +00:00
$search = array ( ' href="css/' , ' src="js/' , ' href="src/' , ' href="thumb/' , ' href="res/' , ' href="imgboard.php' , ' href="favicon.ico' , 'src="thumb/' , 'src="inc/' , ' action="imgboard.php' );
$replace = array ( ' href="../css/' , ' src="../js/' , ' href="../src/' , ' href="../thumb/' , ' href="../res/' , ' href="../imgboard.php' , ' href="../favicon.ico' , 'src="../thumb/' , 'src="../inc/' , ' action="../imgboard.php' );
2014-06-24 19:51:22 +00:00
2009-09-20 02:53:15 +00:00
return str_replace ( $search , $replace , $html );
}
2011-01-07 08:56:59 +00:00
function _postLink ( $matches ) {
$post = postByID ( $matches [ 1 ]);
if ( $post ) {
2011-08-07 07:24:39 +00:00
return '<a href="res/' . ( $post [ 'parent' ] == TINYIB_NEWTHREAD ? $post [ 'id' ] : $post [ 'parent' ]) . '.html#' . $matches [ 1 ] . '">' . $matches [ 0 ] . '</a>' ;
2011-01-07 08:56:59 +00:00
}
return $matches [ 0 ];
}
function postLink ( $message ) {
return preg_replace_callback ( '/>>([0-9]+)/' , '_postLink' , $message );
}
2009-09-20 02:53:15 +00:00
function colorQuote ( $message ) {
2014-06-24 19:51:22 +00:00
if ( substr ( $message , - 1 , 1 ) != " \n " ) {
$message .= " \n " ;
}
2009-09-20 02:53:15 +00:00
return preg_replace ( '/^(>[^\>](.*))\n/m' , '<span class="unkfunc">\\1</span>' . " \n " , $message );
}
function deletePostImages ( $post ) {
2014-06-24 19:51:22 +00:00
if ( $post [ 'file' ] != '' ) {
@ unlink ( 'src/' . $post [ 'file' ]);
}
if ( $post [ 'thumb' ] != '' ) {
@ unlink ( 'thumb/' . $post [ 'thumb' ]);
}
2009-09-20 02:53:15 +00:00
}
2014-11-06 11:34:19 +00:00
function checkCAPTCHA () {
if ( ! TINYIB_CAPTCHA ) {
return ; // CAPTCHA is disabled
}
$captcha = isset ( $_POST [ 'captcha' ]) ? strtolower ( trim ( $_POST [ 'captcha' ])) : '' ;
$captcha_solution = isset ( $_SESSION [ 'tinyibcaptcha' ]) ? strtolower ( trim ( $_SESSION [ 'tinyibcaptcha' ])) : '' ;
if ( $captcha == '' ) {
fancyDie ( 'Please enter the CAPTCHA text.' );
} else if ( $captcha != $captcha_solution ) {
fancyDie ( 'Incorrect CAPTCHA text entered. Please try again.<br>Click the image to retrieve a new CAPTCHA.' );
}
}
2010-12-31 23:24:55 +00:00
function checkBanned () {
$ban = banByIP ( $_SERVER [ 'REMOTE_ADDR' ]);
if ( $ban ) {
if ( $ban [ 'expire' ] == 0 || $ban [ 'expire' ] > time ()) {
2011-08-07 07:24:39 +00:00
$expire = ( $ban [ 'expire' ] > 0 ) ? ( '<br>This ban will expire ' . date ( 'y/m/d(D)H:i:s' , $ban [ 'expire' ])) : '<br>This ban is permanent and will not expire.' ;
$reason = ( $ban [ 'reason' ] == '' ) ? '' : ( '<br>Reason: ' . $ban [ 'reason' ]);
fancyDie ( 'Your IP address ' . $ban [ 'ip' ] . ' has been banned from posting on this image board. ' . $expire . $reason );
2010-12-31 23:24:55 +00:00
} else {
clearExpiredBans ();
}
}
}
function checkFlood () {
2011-08-07 07:24:39 +00:00
if ( TINYIB_DELAY > 0 ) {
$lastpost = lastPostByIP ();
if ( $lastpost ) {
if (( time () - $lastpost [ 'timestamp' ]) < TINYIB_DELAY ) {
fancyDie ( " Please wait a moment before posting again. You will be able to make another post in " . ( TINYIB_DELAY - ( time () - $lastpost [ 'timestamp' ])) . " " . plural ( " second " , ( TINYIB_DELAY - ( time () - $lastpost [ 'timestamp' ]))) . " . " );
}
2010-12-31 23:24:55 +00:00
}
}
}
2011-01-07 09:50:03 +00:00
function checkMessageSize () {
if ( strlen ( $_POST [ " message " ]) > 8000 ) {
fancyDie ( " Please shorten your message, or post it in multiple parts. Your message is " . strlen ( $_POST [ " message " ]) . " characters long, and the maximum allowed is 8000. " );
}
}
2009-09-20 02:53:15 +00:00
function manageCheckLogIn () {
2014-06-24 19:51:22 +00:00
$loggedin = false ;
$isadmin = false ;
2009-09-20 02:53:15 +00:00
if ( isset ( $_POST [ 'password' ])) {
2014-11-08 01:02:17 +00:00
if ( $_POST [ 'password' ] === TINYIB_ADMINPASS ) {
2010-12-03 10:11:14 +00:00
$_SESSION [ 'tinyib' ] = TINYIB_ADMINPASS ;
2014-11-08 01:02:17 +00:00
} elseif ( TINYIB_MODPASS != '' && $_POST [ 'password' ] === TINYIB_MODPASS ) {
2010-12-03 10:11:14 +00:00
$_SESSION [ 'tinyib' ] = TINYIB_MODPASS ;
2009-09-20 02:53:15 +00:00
}
}
2014-06-24 19:51:22 +00:00
2009-09-20 02:53:15 +00:00
if ( isset ( $_SESSION [ 'tinyib' ])) {
2014-11-08 01:02:17 +00:00
if ( $_SESSION [ 'tinyib' ] === TINYIB_ADMINPASS ) {
2009-09-20 02:53:15 +00:00
$loggedin = true ;
$isadmin = true ;
2014-11-08 01:02:17 +00:00
} elseif ( TINYIB_MODPASS != '' && $_SESSION [ 'tinyib' ] === TINYIB_MODPASS ) {
2009-09-20 02:53:15 +00:00
$loggedin = true ;
}
}
2014-06-24 19:51:22 +00:00
2009-09-20 02:53:15 +00:00
return array ( $loggedin , $isadmin );
}
2010-12-03 10:31:51 +00:00
function setParent () {
if ( isset ( $_POST [ " parent " ])) {
2011-08-07 07:24:39 +00:00
if ( $_POST [ " parent " ] != TINYIB_NEWTHREAD ) {
2010-12-03 10:31:51 +00:00
if ( ! threadExistsByID ( $_POST [ 'parent' ])) {
fancyDie ( " Invalid parent thread ID supplied, unable to create post. " );
}
2014-06-24 19:51:22 +00:00
2010-12-03 10:31:51 +00:00
return $_POST [ " parent " ];
}
}
2014-06-24 19:51:22 +00:00
2011-08-07 07:24:39 +00:00
return TINYIB_NEWTHREAD ;
2010-12-03 10:31:51 +00:00
}
2011-08-07 07:24:39 +00:00
function isRawPost () {
if ( isset ( $_POST [ 'rawpost' ])) {
2010-12-03 10:31:51 +00:00
list ( $loggedin , $isadmin ) = manageCheckLogIn ();
if ( $loggedin ) {
return true ;
}
}
2014-06-24 19:51:22 +00:00
2010-12-03 10:31:51 +00:00
return false ;
}
function validateFileUpload () {
switch ( $_FILES [ 'file' ][ 'error' ]) {
case UPLOAD_ERR_OK :
break ;
case UPLOAD_ERR_FORM_SIZE :
2011-08-07 07:24:39 +00:00
fancyDie ( " That file is larger than " . TINYIB_MAXKBDESC . " . " );
2010-12-03 10:31:51 +00:00
break ;
case UPLOAD_ERR_INI_SIZE :
fancyDie ( " The uploaded file exceeds the upload_max_filesize directive ( " . ini_get ( 'upload_max_filesize' ) . " ) in php.ini. " );
break ;
case UPLOAD_ERR_PARTIAL :
fancyDie ( " The uploaded file was only partially uploaded. " );
break ;
case UPLOAD_ERR_NO_FILE :
fancyDie ( " No file was uploaded. " );
break ;
case UPLOAD_ERR_NO_TMP_DIR :
fancyDie ( " Missing a temporary folder. " );
break ;
case UPLOAD_ERR_CANT_WRITE :
fancyDie ( " Failed to write file to disk " );
break ;
default :
fancyDie ( " Unable to save the uploaded file. " );
}
}
2014-06-24 19:51:22 +00:00
function checkDuplicateFile ( $hex ) {
2010-12-03 10:31:51 +00:00
$hexmatches = postsByHex ( $hex );
if ( count ( $hexmatches ) > 0 ) {
foreach ( $hexmatches as $hexmatch ) {
2011-08-07 07:24:39 +00:00
fancyDie ( " Duplicate file uploaded. That file has already been posted <a href= \" res/ " . (( $hexmatch [ " parent " ] == TINYIB_NEWTHREAD ) ? $hexmatch [ " id " ] : $hexmatch [ " parent " ]) . " .html# " . $hexmatch [ " id " ] . " \" >here</a>. " );
2010-12-03 10:31:51 +00:00
}
}
}
2013-05-15 03:42:56 +00:00
function thumbnailDimensions ( $post ) {
if ( $post [ 'parent' ] == TINYIB_NEWTHREAD ) {
$max_width = TINYIB_MAXWOP ;
$max_height = TINYIB_MAXHOP ;
} else {
$max_width = TINYIB_MAXW ;
$max_height = TINYIB_MAXH ;
}
return ( $post [ 'image_width' ] > $max_width || $post [ 'image_height' ] > $max_height ) ? array ( $max_width , $max_height ) : array ( $post [ 'image_width' ], $post [ 'image_height' ]);
2010-12-03 10:31:51 +00:00
}
2009-09-20 02:53:15 +00:00
function createThumbnail ( $name , $filename , $new_w , $new_h ) {
2010-12-03 10:31:51 +00:00
$system = explode ( " . " , $filename );
2009-09-20 02:53:15 +00:00
$system = array_reverse ( $system );
if ( preg_match ( " /jpg|jpeg/ " , $system [ 0 ])) {
2011-01-22 04:53:37 +00:00
$src_img = imagecreatefromjpeg ( $name );
2009-09-20 02:53:15 +00:00
} else if ( preg_match ( " /png/ " , $system [ 0 ])) {
2011-01-22 04:53:37 +00:00
$src_img = imagecreatefrompng ( $name );
2009-09-20 02:53:15 +00:00
} else if ( preg_match ( " /gif/ " , $system [ 0 ])) {
2011-01-22 04:53:37 +00:00
$src_img = imagecreatefromgif ( $name );
2009-09-20 02:53:15 +00:00
} else {
return false ;
}
2014-06-24 19:51:22 +00:00
2009-09-20 02:53:15 +00:00
if ( ! $src_img ) {
fancyDie ( " Unable to read uploaded file during thumbnailing. A common cause for this is an incorrect extension when the file is actually of a different type. " );
}
$old_x = imageSX ( $src_img );
$old_y = imageSY ( $src_img );
2011-01-22 04:53:37 +00:00
$percent = ( $old_x > $old_y ) ? ( $new_w / $old_x ) : ( $new_h / $old_y );
2009-09-20 02:53:15 +00:00
$thumb_w = round ( $old_x * $percent );
$thumb_h = round ( $old_y * $percent );
2014-06-24 19:51:22 +00:00
2014-08-03 20:43:33 +00:00
$dst_img = imagecreatetruecolor ( $thumb_w , $thumb_h );
if ( preg_match ( " /png/ " , $system [ 0 ]) && imagepng ( $src_img , $filename )) {
2014-07-26 20:52:06 +00:00
imagealphablending ( $dst_img , false );
imagesavealpha ( $dst_img , true );
2014-08-03 20:43:33 +00:00
2014-07-26 20:52:06 +00:00
$color = imagecolorallocatealpha ( $dst_img , 0 , 0 , 0 , 0 );
imagefilledrectangle ( $dst_img , 0 , 0 , $thumb_w , $thumb_h , $color );
imagecolortransparent ( $dst_img , $color );
2014-08-03 20:43:33 +00:00
imagecopyresampled ( $dst_img , $src_img , 0 , 0 , 0 , 0 , $thumb_w , $thumb_h , $old_x , $old_y );
} else {
fastimagecopyresampled ( $dst_img , $src_img , 0 , 0 , 0 , 0 , $thumb_w , $thumb_h , $old_x , $old_y );
2014-07-26 20:52:06 +00:00
}
2014-06-24 19:51:22 +00:00
2009-09-20 02:53:15 +00:00
if ( preg_match ( " /png/ " , $system [ 0 ])) {
if ( ! imagepng ( $dst_img , $filename )) {
return false ;
}
} else if ( preg_match ( " /jpg|jpeg/ " , $system [ 0 ])) {
if ( ! imagejpeg ( $dst_img , $filename , 70 )) {
return false ;
}
} else if ( preg_match ( " /gif/ " , $system [ 0 ])) {
2014-06-24 19:51:22 +00:00
if ( ! imagegif ( $dst_img , $filename )) {
2009-09-20 02:53:15 +00:00
return false ;
}
}
2014-08-03 20:43:33 +00:00
2014-06-24 19:51:22 +00:00
imagedestroy ( $dst_img );
imagedestroy ( $src_img );
2014-08-03 20:43:33 +00:00
2009-09-20 02:53:15 +00:00
return true ;
}
2014-08-03 20:43:33 +00:00
function fastimagecopyresampled ( & $dst_image , & $src_image , $dst_x , $dst_y , $src_x , $src_y , $dst_w , $dst_h , $src_w , $src_h , $quality = 3 ) {
2014-06-24 19:51:22 +00:00
// Author: Tim Eckel - Date: 12/17/04 - Project: FreeRingers.net - Freely distributable.
if ( empty ( $src_image ) || empty ( $dst_image )) {
return false ;
}
2009-09-20 02:53:15 +00:00
if ( $quality <= 1 ) {
2014-06-24 19:51:22 +00:00
$temp = imagecreatetruecolor ( $dst_w + 1 , $dst_h + 1 );
imagecopyresized ( $temp , $src_image , $dst_x , $dst_y , $src_x , $src_y , $dst_w + 1 , $dst_h + 1 , $src_w , $src_h );
imagecopyresized ( $dst_image , $temp , 0 , 0 , 0 , 0 , $dst_w , $dst_h , $dst_w , $dst_h );
imagedestroy ( $temp );
2009-09-20 02:53:15 +00:00
} elseif ( $quality < 5 && (( $dst_w * $quality ) < $src_w || ( $dst_h * $quality ) < $src_h )) {
$tmp_w = $dst_w * $quality ;
$tmp_h = $dst_h * $quality ;
2014-06-24 19:51:22 +00:00
$temp = imagecreatetruecolor ( $tmp_w + 1 , $tmp_h + 1 );
imagecopyresized ( $temp , $src_image , $dst_x * $quality , $dst_y * $quality , $src_x , $src_y , $tmp_w + 1 , $tmp_h + 1 , $src_w , $src_h );
imagecopyresampled ( $dst_image , $temp , 0 , 0 , 0 , 0 , $dst_w , $dst_h , $tmp_w , $tmp_h );
imagedestroy ( $temp );
2009-09-20 02:53:15 +00:00
} else {
2014-06-24 19:51:22 +00:00
imagecopyresampled ( $dst_image , $src_image , $dst_x , $dst_y , $src_x , $src_y , $dst_w , $dst_h , $src_w , $src_h );
2009-09-20 02:53:15 +00:00
}
2014-06-24 19:51:22 +00:00
2009-09-20 02:53:15 +00:00
return true ;
}
2014-07-05 19:27:18 +00:00
function addVideoOverlay ( $thumb_location ) {
if ( file_exists ( 'video_overlay.png' )) {
if ( substr ( $thumb_location , - 4 ) == " .jpg " ) {
$thumbnail = imagecreatefromjpeg ( $thumb_location );
} else {
$thumbnail = imagecreatefrompng ( $thumb_location );
}
list ( $width , $height , $type , $attr ) = getimagesize ( $thumb_location );
$overlay_play = imagecreatefrompng ( 'video_overlay.png' );
imagealphablending ( $overlay_play , false );
imagesavealpha ( $overlay_play , true );
list ( $overlay_width , $overlay_height , $overlay_type , $overlay_attr ) = getimagesize ( 'video_overlay.png' );
if ( substr ( $thumb_location , - 4 ) == " .png " ) {
imagecolortransparent ( $thumbnail , imagecolorallocatealpha ( $thumbnail , 0 , 0 , 0 , 127 ));
imagealphablending ( $thumbnail , true );
imagesavealpha ( $thumbnail , true );
}
imagecopy ( $thumbnail , $overlay_play , ( $width / 2 ) - ( $overlay_width / 2 ), ( $height / 2 ) - ( $overlay_height / 2 ), 0 , 0 , $overlay_width , $overlay_height );
if ( substr ( $thumb_location , - 4 ) == " .jpg " ) {
imagejpeg ( $thumbnail , $thumb_location );
} else {
imagepng ( $thumbnail , $thumb_location );
}
}
}
2011-08-07 07:24:39 +00:00
function strallpos ( $haystack , $needle , $offset = 0 ) {
$result = array ();
2014-06-24 19:51:22 +00:00
for ( $i = $offset ; $i < strlen ( $haystack ); $i ++ ) {
2011-08-07 07:24:39 +00:00
$pos = strpos ( $haystack , $needle , $i );
if ( $pos !== False ) {
$offset = $pos ;
if ( $offset >= $i ) {
$i = $offset ;
$result [] = $offset ;
}
}
}
return $result ;
}