ACC SHELL

Path : /srv/www/vhosts/profias/inc/admin/
File Upload :
Current File : /srv/www/vhosts/profias/inc/admin/Documents.php

<?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'=>'200',
            'height'=>'200',
            '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('&amp;', '&', 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('&amp;', '&', 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('&amp;', '&', 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">&nbsp;</th>
              <th>Název</th>
              <th>Náhled</th>
              <th>Preview</th>
            </tr>           
        ';
      
        for ($i=0; $i<count($tmp); $i++)
        {      
          $img='&nbsp;';
          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];

              
       if ($size[0]<$size[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]);
    
       }   
    if ($size[0]>$size[1])   
    {
            $preview=imagecreatetruecolor($this->thumbs[$i]['width'],$size[1]*$ratio2);
      imagecopyresized($preview, $source, 0, 0, 0, 0, $this->thumbs[$i]['width'], $size[1]*$ratio2, $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('&amp;', '&', get_params($_GET, array())));
      die();
    
            ftp_close($conn_id);

    }
  }

  }


?>

ACC SHELL 2018