clipbucket/upload/plugins/cb_server_thumb/cb_server_thumb.php
2014-12-04 14:13:13 +00:00

429 lines
No EOL
14 KiB
PHP

<?php
/*
Plugin Name: Server Thumb for ClipBucket
Description: Add function in clipbucket to get server thumb :)
Author: Mohammad Shoaib
Author Website: http://clip-bucket.com/
ClipBucket Version: 2
Version: 1.0
Website: http://clip-bucket.com/
Plugin Type: global
*/
define("DEFAULT_WIDTH",200);
define("DEFAULT_HEIGHT",120);
define("CB_SERVER_THUMB_DIR_NAME",basename(__DIR__));
define("CB_SERVER_THUMB_URL",PLUG_URL.'/'.CB_SERVER_THUMB_DIR_NAME);
define("CB_SERVER_THUMB_DIR",PLUG_DIR.'/'.CB_SERVER_THUMB_DIR_NAME);
$__resize_thumbs = true;
if(!is_writable(CB_SERVER_THUMB_DIR.'/cache'))
{
$__resize_thumbs =false;
if(IS_BACKENED)
{
e("'cache' directory is not writeable for resizing thumbs","w");
}
}
if(!function_exists('server_thumb'))
{
function server_thumb($vdetails, $array)
{
global $__resize_thumbs;
if(!$__resize_thumbs) return;
$w=DEFAULT_WIDTH;
$h=DEFAULT_HEIGHT;
list($width,$height) = explode('x',$array['size']);
if(isset($width) && is_numeric($width) && isset($height) && is_numeric($height) )
{
$w = $width;
$h = $height;
}
if( $array['num']=='big' || $array['size']=='big' )
{
$w = 320;
$h = 250;
}
else if($array['num']=='medium' || $array['size']=='medium')
{
$w = 160;
$h = 90;
}
else if($array['num']=='small' || $array['size']=='small')
{
$w = 120;
$h = 60;
}
$tim_postfix = '&type=photos&h='.$h.'&w='.$w.'&zc=1';
global $baseurl;
$timthumb_path = CB_SERVER_THUMB_URL.'/timthumb.php?src=';
#get all possible thumbs of video
$thumbDir = (isset($vdetails['file_directory']) && $vdetails['file_directory']) ? $vdetails['file_directory'] : "";
if(!isset($vdetails['file_directory'])){
$justDate = explode(" ", $vdetails['date_added']);
$thumbDir = implode("/", explode("-", array_shift($justDate)));
}
if(substr($thumbDir, (strlen($thumbDir) - 1)) !== "/"){
$thumbDir .= "/";
}
//$justDate = explode(" ", $vdetails['date_added']);
//$dateAdded = implode("/", explode("-", array_shift($justDate)));
$file_dir ="";
if(isset($vdetails['file_name']) && $thumbDir)
{
$file_dir = "/" . $thumbDir;
}
$vid_thumbs = glob(THUMBS_DIR."/" .$file_dir.$vdetails['file_name']."*");
#replace Dir with URL
if(is_array($vid_thumbs))
foreach($vid_thumbs as $thumb)
{
if(file_exists($thumb) && filesize($thumb)>0)
{
$thumb_parts = explode('/',$thumb);
$thumb_file = $thumb_parts[count($thumb_parts)-1];
if(!is_big($thumb_file) || $array['return_big'])
{
if($array['return_full_path'])
$thumbs[] = $timthumb_path.$thumb_file.'&directory=thumbs/'.$thumbDir.$tim_postfix;
else
$thumbs[] = $timthumb_path.$thumb_file.'&directory=thumbs/'.$tim_postfix;
}
}elseif(file_exists($thumb))
unlink($thumb);
}
if(count($thumbs)==0)
{
$get_default_thumb = explode('/', default_thumb());
$d_thumb = end($get_default_thumb);
if($array['count'])
return count($thumbs);
if($array['multi'])
return $dthumb[0] = $timthumb_path.$d_thumb.'&directory=thumbs/'.$tim_postfix;
return $timthumb_path.$d_thumb.'&directory=thumbs/'.$tim_postfix;
}
else
{
if($array['multi'])
return $thumbs;
if($array['count'])
return count($thumbs);
//Now checking for thumb
if($array['num']=='default')
{
$num = $vdetails['default_thumb'];
}
if($array['num']=='big' || $array['size']=='big')
{
$num = 'big-'.$vdetails['default_thumb'];
if(!file_exists(THUMBS_DIR.'/'.$vdetails['file_name'].'-'.$num.'.jpg'))
$num = 'big';
}
$default_thumb = array_find($vdetails['file_name'].'-'.$num, $thumbs);
if(!empty($default_thumb))
return $default_thumb;
return $thumbs[0];
}
}
}
global $Cbucket;
$Cbucket->custom_get_thumb_funcs[] = 'server_thumb';
if(!function_exists('get_server_img'))
{
function get_server_img($params)
{
global $__resize_thumbs;
if(!$__resize_thumbs) return;
$w=DEFAULT_WIDTH;
$h=DEFAULT_HEIGHT;
global $baseurl;
$timthumb_path = CB_SERVER_THUMB_URL.'/timthumb.php?src=';
//var_dump($params);
$details = $params[ 'details' ];
$output = $params[ 'output' ];
$size = $params[ 'size' ];
$default = array( 't', 'm', 'l', 'o' );
$thumbs = array();
if( !$details ) {
//var_dump("get default 1");
return get_photo_default_thumb( $size, $output );
}
if ( !is_array( $details ) ) {
$photo = $cbphoto->get_photo( $details, true );
} else {
$photo = $details;
}
if ( empty( $photo[ 'photo_id' ] ) or empty( $photo[ 'photo_key' ] ) ) {
return get_photo_default_thumb( $size, $output );
}
if( empty( $photo[ 'filename' ] ) or empty( $photo[ 'ext' ] ) ) {
return get_photo_default_thumb( $size, $output );
}
$params[ 'photo' ] = $photo;
$path = PHOTOS_DIR;
$directory = get_photo_date_folder( $photo );
$with_path = $params['with_path'] = ( $params['with_path'] === false ) ? false : true;
$with_original = $params[ 'with_orig' ];
$size = ( !in_array( $size, $default ) or !$size ) ? 't' : $size;
if( $size=='l')
{
$w = 320;
$h = 250;
}
else if($size=='m')
{
$w = 160;
$h = 90;
}
else if($size=='t')
{
$w = 120;
$h = 60;
}
list($width,$height) = explode('x',$params['size']);
if(isset($width) && is_numeric($width) && isset($height) && is_numeric($height) )
{
$w = $width;
$h = $height;
}
$tim_postfix = '&type=photos&h='.$h.'&w='.$w.'&zc=1';
if( $directory ) {
$directory .= '/';
}
$path .= '/'.$directory;
$filename = $photo[ 'filename' ].'%s.'.$photo[ 'ext' ];
$files = glob( $path.sprintf( $filename, '*' ) );
global $cbphoto;
if ( !empty( $files ) ) {
foreach( $files as $file ) {
$thumb_name = explode( "/", $file );
$thumb_name = end( $thumb_name );
$thumb_type = $cbphoto->get_image_type( $thumb_name );
if( $with_original ) {
//$thumbs[] = ( ( $with_path ) ? PHOTOS_URL.'/' : '' ) . $directory . $thumb_name;
$thumbs[] = $timthumb_path.$thumb_name.'&directory=photos/'.$directory.$tim_postfix;
} else if( !empty( $thumb_type ) ) {
//$thumbs[] = ( ( $with_path ) ? PHOTOS_URL.'/' : '' ) . $directory . $thumb_name;
$thumbs[] = $timthumb_path.$thumb_name.'&directory=photos/'.$directory.$tim_postfix;
}
}
if ( empty( $output ) or $output == 'non_html' ) {
if ( $params[ 'assign' ] and $params[ 'multi' ] ) {
assign( $params[ 'assign' ], $thumbs );
} else if( ( $params[ 'multi' ] ) ) {
return $thumbs;
} else {
$search_name = sprintf( $filename, "_".$size );
$return_thumb = array_find( $search_name, $thumbs );
if( empty( $return_thumb ) ) {
return get_photo_default_thumb( $size, $output );
} else {
if( $params[ 'assign' ] ) {
assign( $params[ 'assign' ], $return_thumb );
} else {
return $return_thumb;
}
}
}
}
if ( $output == 'html' ) {
$search_name = sprintf( $filename, "_".$size );
$src = array_find( $search_name, $thumbs );
$src = ( empty( $src ) ) ? get_photo_default_thumb( $size ) : $src;
$attrs = array( 'src' => $src );
if( phpversion < '5.2.0' ) {
global $json;
}
if ( $json ) {
$image_details = $json->json_decode( $photo['photo_details'],true );
} else {
$image_details = json_decode( $photo[ 'photo_details' ], true );
}
if ( empty( $image_details ) or empty( $image_details[ $size ] ) ) {
$dem = getimagesize( str_replace( PHOTOS_URL, PHOTOS_DIR, $src ) );
$width = $dem[0];
$height = $dem[1];
/* UPDATEING IMAGE DETAILS */
$cbphoto->update_image_details( $photo );
} else {
$width = $image_details[ $size ][ 'width' ];
$height = $image_details[ $size ][ 'height' ];
}
if ( ( $params['width'] and is_numeric( $params['width'] ) ) and ( $params['height'] and is_numeric( $height ) ) ) {
$width = $params['width'];
$height = $params['height'];
} else if ( ( $params['width'] and is_numeric( $params['width'] ) ) ) {
$height = round( $params['width'] / $width * $height );
$width = $params['width'];
} else if ( ( $params['height'] and is_numeric( $height ) ) ) {
$width = round( $params['height'] * $width / $height );
$height = $params['height'];
}
//$attrs[ 'width' ] = $width;
//$attrs[ 'height' ] = $height;
$attrs[ 'id' ] = ( ( $params[ 'id' ] ) ? $params[ 'id' ].'_' : 'photo_' ).$photo[ 'photo_id' ];
if( $params[ 'class' ] ) {
$attrs[ 'class' ] = mysql_clean( $params[ 'class' ] );
}
if ( $params['align'] ) {
$attrs['align'] = mysql_clean( $params['align'] );
}
$attrs[ 'title' ] = $photo[ 'photo_title' ];
if ( isset( $params[ 'title' ] ) and $params[ 'title' ] == '' ) {
unset( $attrs[ 'title' ] );
}
$attrs[ 'alt' ] = TITLE.' - '.$photo[ 'photo_title' ];
$anchor_p = array( "place" => 'photo_thumb', "data" => $photo );
$params['extra'] = ANCHOR( $anchor_p );
if ( $params['style'] ) {
$attrs['style'] = ( $params['style'] );
}
if ( $params['extra'] ) {
$attrs['extra'] = ( $params['extra'] );
}
$image = cb_create_html_tag( 'img', true, $attrs );
if ( $params[ 'assign' ] ) {
assign( $params[ 'assign' ], $image );
} else {
return $image;
}
}
} else {
return get_photo_default_thumb( $size, $output );
}
}
}
$Cbucket->custom_get_photo_funcs[] = 'get_server_img';
if(!function_exists('user_thumb'))
{
function user_thumb($params)
{
if($params['just_file'])
return false;
if($params['is_remote'])
return false;
$size = $params[ 'size' ];
$default = array( 't', 'm', 'l', 'o','small' );
$size = ( !in_array( $size, $default ) or !$size ) ? 't' : $size;
if( $size=='l')
{
$w = 320;
$h = 250;
}
else if($size=='m')
{
$w = 160;
$h = 90;
}
else if($size=='t' || $size=='small' )
{
$w = 40;
$h = 40;
}
$tim_postfix = '&type=users&h='.$h.'&w='.$w.'&zc=1';
$timthumb_path = CB_SERVER_THUMB_URL.'/timthumb.php?src=';
if(isset($params['thumb_name']) && isset($params['thumb_path']))
return $timthumb_path.$params['thumb_name'].'&directory='.$params['thumb_path'].$tim_postfix;
else
return false;
//http://dev.cbnew/plugins/cb_server_thumb/timthumb.php?src=test2-1.jpg&directory=thumbs/2014/09/08/&type=photos&h=120&w=160&zc=1
}
}
$Cbucket->custom_user_thumb[] = 'user_thumb';
?>