ACC SHELL
<?php
class File extends AdminItem
{
var $thumbs;
var $thumbDirectory;
function File($args)
{
$this->setBasicParametres($args);
if (TRUE==is_array($args['thumbs']))
{
$this->thumbs=$args['thumbs'];
}
else
{
$this->thumbs=array(
array(
'width'=>'750',
'height'=>'600',
'directory'=>'thumb-m',
'quality'=>'80',
),
array(
'width'=>'120',
'height'=>'60',
'directory'=>'thumb-s',
'quality'=>'60',
),
);
}
if (TRUE==isset($args['thumb_directory']))
{
$this->thumbDirectory=$args['thumb_directory'];
}
}
function detail($admin)
{
if (TRUE==isset($this->thumbDirectory))
{
$tmp=$GLOBALS['db']->select(
'path',
'files',
'id='.(int)$admin->dataRow[$this->formName],
'1'
);
if (0<count($tmp))
{
$value='<img src="'.$admin->ftp['http_root'].''.$admin->table.$admin->id.'/'.$this->thumbDirectory.'/'.$tmp['path'].'" alt="'.$this->name.'" />';
}
else
{
$value='-';
}
$params=array(
'label'=>$this->name,
'value'=>$value,
'in_detail'=>$this->inDetail,
);
}
else
{
$params=array();
}
return $params;
}
function getFormParams($admin)
{
$result=array(
'type'=>'file',
'name'=>$this->formName,
'value'=>$this->default,
'reg'=>$this->reg,
'css_id'=>$this->id,
'css_class'=>$this->class,
'spec'=>$this->spec,
'label'=>$this->name,
'label_id'=>$this->labelId,
'label_class'=>$this->labelClass,
);
return array($result);
}
function getInsertParams($admin)
{
//print_r($admin->ftp);
// zjisti id noveho souboru
$id=get_auto_increment($admin->filesTable);
$file=$_FILES[$this->formName];
if (TRUE==$admin->id)
{
$admin_id=$admin->id;
}
else
{
$admin_id=get_auto_increment($admin->table.'s');
}
if (TRUE==$file['tmp_name'])
{
$row=array(
'name'=>$file['name'],
'path'=>(int)$id.'-'.sys_name($file['name']),
'type'=>$file['type'],
'size'=>$file['size'],
);
// pokud se jedna o obrazek ulozi se data o rozmerech
if (TRUE==in_array($file['type'], $admin->imageTypes))
{
$size=getimagesize($file['tmp_name']);
$row['width']=$size[0];
$row['height']=$size[1];
}
// soubor se ulozi na FTP
$conn_id=ftp_connect($admin->ftp['server']) or die('Nemohu se připojit k FTP serveru.');
$login_result = ftp_login($conn_id, $admin->ftp['login'], $admin->ftp['password']) or die('Nemohu se pipojit k FTP serveru.');
ftp_chdir($conn_id, $admin->ftp['root']);
@ftp_mkdir($conn_id, $admin->table.$admin_id);
ftp_chdir($conn_id, $admin->table.$admin_id);
ftp_put($conn_id, $row['path'], $file['tmp_name'], FTP_BINARY);
// pokud se jedna o obrazek, upravi se do zvolenych rozmeru a ulozi do prislusnych adresaru
if (TRUE==in_array($file['type'], $admin->imageTypes))
{
if (
('image/jpeg'==$file['type'])
||
('image/pjpeg'==$file['type'])
)
{
$source=imagecreatefromjpeg($file['tmp_name']);
}
else if ('image/gif'==$file['type'])
{
$source=imagecreatefromgif($file['tmp_name']);
}
else if ('image/x-bmp'==$file['type'])
{
$source=imagecreatefromwbmp($file['tmp_name']);
}
else
{
$source=imagecreatefromjpeg($file['tmp_name']);
}
for ($i=0; $i<count($this->thumbs); $i++)
{
if (TRUE==$this->thumbs[$i]['directory'])
{
$tmp_ratio[1]=$this->thumbs[$i]['width']/$size[0];
$tmp_ratio[2]=$this->thumbs[$i]['height']/$size[1];
$ratio=min($tmp_ratio);
$preview=imagecreatetruecolor($size[0]*$ratio, $size[1]*$ratio);
imagecopyresized($preview, $source, 0, 0, 0, 0, $size[0]*$ratio, $size[1]*$ratio, $size[0], $size[1]);
if (
('image/jpeg'==$file['type'])
||
('image/pjpeg'==$file['type'])
)
{
imagejpeg($preview, $file['tmp_name'], $this->thumbs[$i]['quality']);
}
else if ('image/gif'==$file['type'])
{
imagegif($preview, $file['tmp_name'], $this->thumbs[$i]['quality']);
}
else if ('image/x-bmp'==$file['type'])
{
imagewbmp($preview, $file['tmp_name'], $this->thumbs[$i]['quality']);
}
else
{
imagejpeg($preview, $file['tmp_name'], $this->thumbs[$i]['quality']);
}
@ftp_mkdir($conn_id, $this->thumbs[$i]['directory']);
ftp_chdir($conn_id, $this->thumbs[$i]['directory']);
ftp_put($conn_id, $row['path'], $file['tmp_name'], FTP_BINARY);
ftp_chdir($conn_id, '..');
}
}
if ($row['width'] >= $row['height']){
$width = (int)(1.3*$row["height"]);
$x = (int)(($row['width'] - $width)/2);
$preview=imagecreatetruecolor($width,$row['height']);
imagecopy($preview, $source, 0, 0, $x, 0, $row['width'], $row['height']);
imagejpeg($preview, $file['tmp_name'], 100);
@ftp_mkdir($conn_id, 'tmp');
ftp_chdir($conn_id, 'tmp');
ftp_put($conn_id, $row['path'], $file['tmp_name'], FTP_BINARY);
ftp_chdir($conn_id, '..');
$source=imagecreatefromjpeg('../files/'.$admin->table.$admin->id.'/tmp/'.$row['path']);
$preview2 = imagecreatetruecolor(130,100);
imagecopyresized($preview2, $source, 0, 0, 0, 0, 130, 100,$width , $row['height']);
imagejpeg($preview2, $file['tmp_name'], 100);
@ftp_mkdir($conn_id, 'user');
@ftp_rmdir($conn_id, 'tmp');
ftp_chdir($conn_id, 'user');
ftp_put($conn_id, $row['path'], $file['tmp_name'], FTP_BINARY);
ftp_chdir($conn_id, '..');
}else{
$height = (int)($row["width"]/1.3);
$x = (int)(($row['height'] - $height)/2);
$preview=imagecreatetruecolor($row['width'],$height);
imagecopy($preview, $source, 0, 0, 0, $x, $row['width'], $row['height']);
imagejpeg($preview, $file['tmp_name'], 100);
@ftp_mkdir($conn_id, 'tmp');
ftp_chdir($conn_id, 'tmp');
ftp_put($conn_id, $row['path'], $file['tmp_name'], FTP_BINARY);
ftp_chdir($conn_id, '..');
$source=imagecreatefromjpeg('../files/'.$admin->table.$admin->id.'/tmp/'.$row['path']);
$preview2 = imagecreatetruecolor(130,100);
imagecopyresized($preview2, $source, 0, 0, 0, 0, 130, 100,$row['width'] , $height);
imagejpeg($preview2, $file['tmp_name'], 100);
@ftp_mkdir($conn_id, 'user');
@ftp_rmdir($conn_id, 'tmp');
ftp_chdir($conn_id, 'user');
ftp_put($conn_id, $row['path'], $file['tmp_name'], FTP_BINARY);
ftp_chdir($conn_id, '..');
}
}
$GLOBALS['db']->insert($admin->filesTable, $row);
$result=array(
'table'=>$admin->table.'s',
'field'=>$this->field,
'value'=>(int)$id,
);
ftp_close($conn_id);
}
return array($result);
}
function getInsertMultireferenceParams($admin)
{
// zjisti id noveho souboru
$id=get_auto_increment($admin->filesTable);
$file=$_FILES[$this->formName];
if (TRUE==$admin->id)
{
$admin_id=$admin->id;
}
else
{
$admin_id=get_auto_increment($admin->table.'s');
}
if (TRUE==$file['tmp_name'])
{
$row=array(
'name'=>$file['name'],
'path'=>(int)$id.'-'.sys_name($file['name']),
'type'=>$file['type'],
'size'=>$file['size'],
);
// pokud se jedna o obrazek ulozi se data o rozmerech
if (TRUE==in_array($file['type'], $admin->imageTypes))
{
$size=getimagesize($file['tmp_name']);
$row['width']=$size[0];
$row['height']=$size[1];
}
// soubor se ulozi na FTP
$conn_id=ftp_connect($admin->ftp['server']) or die('Nemohu se pipojit k FTP serveru.');
$login_result = ftp_login($conn_id, $admin->ftp['login'], $admin->ftp['password']) or die('Nemohu se pipojit k FTP serveru.');
ftp_chdir($conn_id, $admin->ftp['root']);
@ftp_mkdir($conn_id, $admin->table.$admin_id);
ftp_chdir($conn_id, $admin->table.$admin_id);
ftp_put($conn_id, $row['path'], $file['tmp_name'], FTP_BINARY);
// pokud se jedna o obrazek, upravi se do zvolenych rozmeru a ulozi do prislusnych adresaru
if (TRUE==in_array($file['type'], $admin->imageTypes))
{
if (
('image/jpeg'==$file['type'])
||
('image/pjpeg'==$file['type'])
)
{
$source=imagecreatefromjpeg($file['tmp_name']);
}
else if ('image/gif'==$file['type'])
{
$source=imagecreatefromgif($file['tmp_name']);
}
else if ('image/x-bmp'==$file['type'])
{
$source=imagecreatefromwbmp($file['tmp_name']);
}
else
{
$source=imagecreatefromjpeg($file['tmp_name']);
}
for ($i=0; $i<count($this->thumbs); $i++)
{
if (TRUE==$this->thumbs[$i]['directory'])
{
$tmp_ratio[1]=$this->thumbs[$i]['width']/$size[0];
$tmp_ratio[2]=$this->thumbs[$i]['height']/$size[1];
$ratio=min($tmp_ratio);
$preview=imagecreatetruecolor($size[0]*$ratio, $size[1]*$ratio);
imagecopyresized($preview, $source, 0, 0, 0, 0, $size[0]*$ratio, $size[1]*$ratio, $size[0], $size[1]);
if (
('image/jpeg'==$file['type'])
||
('image/pjpeg'==$file['type'])
)
{
imagejpeg($preview, $file['tmp_name'], $this->thumbs[$i]['quality']);
}
else if ('image/gif'==$file['type'])
{
imagegif($preview, $file['tmp_name'], $this->thumbs[$i]['quality']);
}
else if ('image/x-bmp'==$file['type'])
{
imagewbmp($preview, $file['tmp_name'], $this->thumbs[$i]['quality']);
}
else
{
imagejpeg($preview, $file['tmp_name'], $this->thumbs[$i]['quality']);
}
@ftp_mkdir($conn_id, $this->thumbs[$i]['directory']);
ftp_chdir($conn_id, $this->thumbs[$i]['directory']);
ftp_put($conn_id, $row['path'], $file['tmp_name'], FTP_BINARY);
ftp_chdir($conn_id, '..');
}
}
}
$GLOBALS['db']->insert($admin->filesTable, $row);
$result=array(
'table'=>$admin->table.'s',
'field'=>$this->field,
'value'=>(int)$id,
);
ftp_close($conn_id);
}
return array($result);
}
}
?>
ACC SHELL 2018