ACC SHELL
<?php
class Documents
{
var $thumbs;
var $sameThumbs;
var $thumbDirectory;
function Documents($admin)
{
$args=array();
if (TRUE==$args['thumbs'])
{
$this->thumbs=$args['thumbs'];
}
else
{
$this->thumbs=array(
array(
'width'=>'640',
'height'=>'500',
'directory'=>'thumb-l',
'quality'=>'100',
),
array(
'width'=>'120',
'height'=>'120',
'directory'=>'thumb-m',
'quality'=>'100',
),
array(
'width'=>'80',
'height'=>'80',
'directory'=>'thumb-s',
'quality'=>'100',
),
);
$this->sameThumbs=array(
array(
'width'=>'100',
'height'=>'100',
'directory'=>'user',
'quality'=>'100',
),
array(
'width'=>'120',
'height'=>'120',
'directory'=>'user2',
'quality'=>'100',
),
);
}
if (TRUE==$args['thumb_directory'])
{
$this->thumbDirectory=$args['thumb_directory'];
}
else
{
$this->thumbDirectory=$admin->thumbDirectory;
}
// nastaveni preview
if (TRUE==isset($_GET['preview'.$admin->table]))
{
$GLOBALS['db']->queryN('UPDATE '.$admin->table.'s SET preview='.(int)$_GET['preview'.$admin->table].' WHERE id='.(int)$admin->id);
header('location: ?'.str_replace('&', '&', get_params($_GET, array('preview'.$admin->table))));
die();
}
// smazani dokumentu
if (TRUE==isset($_POST['document-del'.$admin->table]))
{
$keys=@array_keys($_POST['document-del'.$admin->table]);
if (0<count($keys))
{
$tmp=$GLOBALS['db']->select('f.path, af.id_'.$admin->table.' AS id', $admin->filesTable.' AS f LEFT JOIN '.$admin->table.'s_'.$admin->filesTable.' AS af ON (f.id=af.id_file)', 'f.id IN ('.implode(', ', $keys).')');
// odstrani soubory z 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.');
for ($i=0; $i<count($tmp); $i++)
{
@ftp_delete($conn_id, $admin->ftp['root'].$admin->table.$tmp[$i]['id'].'/'.$tmp[$i]['path']);
for ($j=0; $j<count($this->thumbs); $j++)
{
@ftp_delete($conn_id, $admin->ftp['root'].$admin->table.$tmp[$i]['id'].'/'.$this->thumbs[$j]['directory'].'/'.$tmp[$i]['path']);
}
for ($j=0; $j<count($this->sameThumbs); $j++)
{
@ftp_delete($conn_id, $admin->ftp['root'].$admin->table.$tmp[$i]['id'].'/'.$this->sameThumbs[$j]['directory'].'/'.$tmp[$i]['path']);
}
@ftp_delete($conn_id, $admin->ftp['root'].$admin->table.$tmp[$i]['id'].'/tmp/'.$tmp[$i]['path']);
}
ftp_close($conn_id);
// odstrani soubory z databaze
$GLOBALS['db']->queryN('DELETE FROM '.$admin->table.'s_'.$admin->filesTable.' WHERE id_file IN ('.implode(', ', $keys).')');
$GLOBALS['db']->queryN('DELETE FROM '.$admin->filesTable.' WHERE id IN ('.implode(', ', $keys).')');
}
header('location: ?'.str_replace('&', '&', get_params($_GET, array('preview'.$admin->table))));
die();
}
// ulozeni nazvu dokumentu
if (TRUE==isset($_POST['documents'.$admin->table.'action_save']))
{
// die(print_r($_POST));
$keys=@array_keys($_POST['file']);
for ($i=0; $i<count($keys); $i++)
{
$GLOBALS['db']->queryN('UPDATE '.$admin->filesTable.' SET name=\''.addslashes($_POST['file'][$keys[$i]]).'\' WHERE id='.(int)$keys[$i]);
}
header('location: ?'.str_replace('&', '&', get_params($_GET, array('preview'.$admin->table))));
die();
}
}
function detail($admin)
{
if (TRUE==$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,
);
}
else
{
$params=array();
}
return $params;
}
function edit($admin)
{
$result='';
$icons=$GLOBALS['icons'];
$types=$GLOBALS['types'];
$tmp=$GLOBALS['db']->select(
'f.*',
$admin->table.'s_'.$admin->filesTable.' AS t
LEFT JOIN '.$admin->filesTable.' AS f ON (f.id=t.id_file)
',
'id_'.$admin->table.'='.$admin->id
);
require_once('forms.php');
$form=new Form();
$names_save='';
$result.='
<div id="docs" class="clear_both"><!-- --></div>
<h3>Dokumenty:</h3>
<form class="docs-form" action="" method="post" enctype="multipart/form-data">
';
if (0<count($tmp))
{
$result.='<table cellpadding="0" cellspacing="0" border="0" class="admin-list-table docs-table" >
<tr class="'.$tr_class.'">
<th width="20"> </th>
<th>Název</th>
<th>Náhled</th>
<th>Preview</th>
</tr>
';
for ($i=0; $i<count($tmp); $i++)
{
$img=' ';
if ( (TRUE==in_array($tmp[$i]['type'], $admin->imageTypes)) )
{
$img='<a href="'.$admin->ftp['http_root'].''.$admin->table.$admin->id.'/'.$tmp[$i]['path'].'" target="_blank" rel="lightbox[docs]"><img src="'.$admin->ftp['http_root'].''.$admin->table.$admin->id.'/user2/'.$tmp[$i]['path'].'" target="_blank" alt="'.$tmp[$i]['name'].'" /></a>';
}
else
{
// $img='<a href="'.$admin->ftp['http_root'].''.$admin->table.$admin->id.'/'.$tmp[$i]['path'].'" target="_blank">'.$tmp[$i]['name'].'</a>';
$img='<a href="'.$admin->ftp['http_root'].''.$admin->table.$admin->id.'/'.$tmp[$i]['path'].'" target="_blank"><img src="images/ico/'.$icons[$tmp[$i]['type']].'" alt="'.$tmp[$i]['name'].'" title="'.$tmp[$i]['name'].'" /></a>';
}
if ($admin->dataRow['preview']==$tmp[$i]['id'])
{
$preview='Nastaveno jako preview';
}
else
{
$preview='<a href="?preview'.$admin->table.'='.$tmp[$i]['id'].get_params($_GET, array('preview'.$admin->table)).'">Nastavit jako preview</a>';
}
if (FALSE==$parity)
{
$tr_class='bright';
}
else
{
$tr_class='dark';
}
$parity=!$parity;
if ('N'==$tmp[$i]['active'])
{
$tr_class='inactive';
}
if (TRUE==$admin->readOnly)
{
$name=$tmp[$i]['name'];
}
else
{
$name='<input type="text" name="file['.$tmp[$i]['id'].']" value="'.$tmp[$i]['name'].'" />';
$names_save='
<input type="submit" class="button" name="documents'.$admin->table.'action_save" value="Uložit názvy" />
<div class="clear_both"><!-- --></div>
';
}
if (TRUE==isset($GLOBALS['icons'][$tmp[$i]['type']]))
{
$type='<img src="images/ico/'.$GLOBALS['icons'][$tmp[$i]['type']].'" title="'.$tmp[$i]['type'].'" />';
}
else
{
$type='<img src="images/ico/default.icon.gif" title="'.$tmp[$i]['type'].'" />';
}
$result.='
<tr class="'.$tr_class.'">
<td><input type="checkbox" class="checkbox" name="document-del'.$admin->table.'['.$tmp[$i]['id'].']" value="on" /></td>
<td>'.$name.'</td>
<td>'.$img.'</td>
<td>'.$preview.'</td>
</tr>
';
}
$result.='</table>
';
$result.='
'.$names_save.'
<input type="submit" class="button" name="documents'.$admin->table.'action" value="Odebrat dokument(y)" />
';
}
$result.='
<br /><br /><h3>Nový dokument</h3><input type="file" id="uploaded-file" name="document'.$admin->table.'" />
<input type="hidden" name="uploaddocuments'.$admin->table.'" value="true" /><br />
<div id="files-list"></div>
<script type="text/javascript">
var multi_selector = new MultiSelector( document.getElementById( \'files-list\' ), 5);
multi_selector.addElement(document.getElementById(\'uploaded-file\'));
</script>
<input type="submit" class="button" name="documents'.$admin->table.'action" value="Uložit na server" />
';
if (0<count($_FILES))
{
$this->insert($admin);
}
$result.=$form->getHTML();
return $result;
}
function insert($admin)
{
if (TRUE==$_POST['uploaddocuments'.$admin->table])
{
$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.');
foreach ($_FILES as $file)
{
if (TRUE==$file['tmp_name'])
{
$id=get_auto_increment($admin->filesTable);
if (TRUE==$file['tmp_name'])
{
$row=array(
'name'=>addslashes($file['name']),
'path'=>$id.'-'.addslashes(sys_name($file['name'])),
'type'=>$file['type'],
'size'=>$file['size'],
);
if (TRUE==$admin->actions['on_document_upload'])
{
$row['active']='N';
}
// 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];
}
$GLOBALS['db']->insert($admin->filesTable, $row);
// soubor se ulozi na FTP
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=$tmp_ratio[2];
$ratio2=$tmp_ratio[1];
$preview=imagecreatetruecolor($size[0]*$ratio, $this->thumbs[$i]['height']);
imagecopyresized($preview, $source, 0, 0, 0, 0, $size[0]*$ratio, $this->thumbs[$i]['height'], $size[0], $size[1]);
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, '..');
}
}
for($i=0;$i<count($this->sameThumbs);$i++){
if ($row['width'] >= $row['height']){
$ratio = $this->sameThumbs[$i]["width"]/$this->sameThumbs[$i]["height"];
$width = (int)($ratio*$row["height"]);
$x = (int)(($row['width'] - $width)/2);
$help = $x;
if ($x >= 0){
$preview=imagecreatetruecolor($width,$row['height']);
imagecopy($preview, $source, 0, 0, $x, 0, $row['width'], $row['height']);
}else{
$height = (int)($row["height"]/$ratio);
$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'.$i);
ftp_chdir($conn_id, 'tmp'.$i);
ftp_put($conn_id, $row['path'], $file['tmp_name'], FTP_BINARY);
ftp_chdir($conn_id, '..');
$source2=imagecreatefromjpeg('../files/'.$admin->table.$admin->id.'/tmp'.$i.'/'.$row['path']);
$preview2 = imagecreatetruecolor($this->sameThumbs[$i]["width"],$this->sameThumbs[$i]["height"]);
if ($help>=0){
imagecopyresized($preview2, $source2, 0, 0, 0, 0, $this->sameThumbs[$i]["width"], $this->sameThumbs[$i]["height"],$width , $row['height']);
}else{
imagecopyresized($preview2, $source2, 0, 0, 0, 0, $this->sameThumbs[$i]["width"], $this->sameThumbs[$i]["height"], $row['width'], $height);
}
imagejpeg($preview2, $file['tmp_name'], 100);
@ftp_mkdir($conn_id, $this->sameThumbs[$i]["directory"]);
ftp_chdir($conn_id, $this->sameThumbs[$i]["directory"]);
ftp_put($conn_id, $row['path'], $file['tmp_name'], FTP_BINARY);
ftp_chdir($conn_id, '..');
//@ftp_delete($conn_id, $admin->ftp['root'].$admin->table.$tmp[$i]['id'].'/tmp/'.$tmp[$i]['path']);
@ftp_rmdir($conn_id, 'tmp'.$i);
}else{
$ratio = $this->sameThumbs[$i]["width"]/$this->sameThumbs[$i]["height"];
$height = (int)($row["width"]*$ratio);
$x = (int)(($row['height'] - $height)/2);
$help=$x;
if ($x >= 0){
$preview=imagecreatetruecolor($row["width"],$height);
imagecopy($preview, $source, 0, 0, 0, $x, $row['width'], $row['height']);
}else{
$width = (int)($row["width"]/$ratio);
$x = (int)(($row['height'] - $width)/2);
$preview=imagecreatetruecolor($row["width"],$width);
imagecopy($preview, $source, 0, 0, 0, $x, $row['width'], $row['height']);
}
imagejpeg($preview, $file['tmp_name'], 100);
@ftp_mkdir($conn_id, 'tmp'.$i);
ftp_chdir($conn_id, 'tmp'.$i);
ftp_put($conn_id, $row['path'], $file['tmp_name'], FTP_BINARY);
ftp_chdir($conn_id, '..');
$source2=imagecreatefromjpeg('../files/'.$admin->table.$admin->id.'/tmp'.$i.'/'.$row['path']);
$preview2 = imagecreatetruecolor($this->sameThumbs[$i]["width"],$this->sameThumbs[$i]["height"]);
if ($help>=0){
imagecopyresized($preview2, $source2, 0, 0, 0, 0, $this->sameThumbs[$i]["width"], $this->sameThumbs[$i]["height"],$row['width'] , $height);
}else{
imagecopyresized($preview2, $source2, 0, 0, 0, 0, $this->sameThumbs[$i]["width"], $this->sameThumbs[$i]["height"],$row["width"] , $width);
}
imagejpeg($preview2, $file['tmp_name'], 100);
@ftp_mkdir($conn_id, $this->sameThumbs[$i]["directory"]);
ftp_chdir($conn_id, $this->sameThumbs[$i]["directory"]);
ftp_put($conn_id, $row['path'], $file['tmp_name'], FTP_BINARY);
ftp_chdir($conn_id, '..');
//@ftp_delete($conn_id, $admin->ftp['root'].$admin->table.$tmp[$i]['id'].'/tmp/'.$tmp[$i]['path']);
@ftp_rmdir($conn_id, 'tmp'.$i);
}
}
}
$row=array(
'id_'.$admin->table=>(int)$admin->id,
'id_file'=>(int)$id,
);
$GLOBALS['db']->insert($admin->table.'s_'.$admin->filesTable, $row);
}
if (TRUE==$admin->actions['on_document_upload'])
{
$admin->actions['on_document_upload']($admin, (int)$admin->id);
}
if (FALSE==$admin->preview)
{
$GLOBALS['db']->queryN('UPDATE '.$admin->table.'s SET preview='.(int)$id.' WHERE id='.(int)$admin->id);
}
}
}
header('location: ?'.str_replace('&', '&', get_params($_GET, array())));
die();
ftp_close($conn_id);
}
}
}
?>
ACC SHELL 2018