Вход Регистрация
Файл: adultscript-2.0.3-pro/files/modules/video/helpers/server.php
Строк: 149
<?php
defined
('_VALID') or die('Restricted Access!');
class 
VHelper_video_server
{
    private static 
$servers;
    public static function 
get($server_id=NULL, $status=NULL)
    {
        if (isset(
self::$servers[$server_id])) {
            return 
self::$servers[$server_id];
        }
        
        
$sql        = array();
        if (
$server_id) {
            
$sql[]    = "server_id = ".(int) $server_id;
        }
        
        if (
$status) {
            
$sql[]    = "status = '".$status."'";
        }
    
        
VF::factory_remove('database');
        
$db     = VF::factory('database');
        
$db->query("SELECT server_id, server_name, ftp_host, ftp_port,
                           ftp_username, ftp_password, ftp_root,
                           url, streaming_method, streaming_server,
                           lighttpd_url, lighttpd_secdownload,
                           lighttpd_prefix, lighttpd_key, rtmp_stream
                    FROM #__server
                    WHERE "
.implode(' AND ', $sql)."
                    ORDER BY last_used ASC
                    LIMIT 1"
);
        if (
$db->affected_rows()) {
            
$server    = $db->fetch_assoc();
            if (
$server_id) {
                
self::$servers[$server_id] = $server;
            }
            
            return 
$server;
        }
        
        return 
FALSE;
    }
    
    public static function 
upload($server, $src, $dst)
    {
        if (!
is_array($server)) {
            
$server = self::get($server);
        }
        
        if (
$server) {
            
$conn_id = self::connect($server);
            if (
$conn_id) {
                
$dir = dirname($dst);
                if (
$dir{0} == '/') {
                    
$dir = substr($dir, 1);
                }
                
                if (!
ftp_chdir($conn_id, $dir)) {
                    return 
FALSE;
                }
                
                
$filename = basename($dst);
                
ftp_pasv($conn_id, TRUE);
                    
                
// when you have a lot of videos ftp_nlist is slow
                
@ftp_delete($conn_id, $filename);
                                      
                if (
ftp_put($conn_id, $filename, $src, FTP_BINARY)) {
                    
ftp_site($conn_id, sprintf('CHMOD %u %s', 777, $filename));
                          
                    return 
TRUE;
                }
            }
        }
        
        return 
FALSE;
    }
    
    public static function 
delete($server, $file)
    {
        if (!
is_array($server)) {
            
$server = self::get($server);
        }
        
        if (
$server) {
            
$conn_id = self::connect($server);
            if (
$conn_id) {
                  
$dir = dirname($file);
                if (
$dir{0} == '/') {
                    
$dir = substr($dir, 1);
                }

                if (!
ftp_chdir($conn_id, $dir)) {
                      return 
FALSE;
                }
                    
                
$filename = basename($file);
                
ftp_pasv($conn_id, TRUE);
                  
                @
ftp_delete($conn_id, $filename);
                  
                if (
ftp_size($conn_id, $filename) === -1) {
                    return 
TRUE;
                }
            }
        }
        
        return 
FALSE;
    }
    
    public static function 
exists($server, $file)
    {
        if (!
is_array($server)) {
            
$server = self::get($server);
        }
        
        if (
$server) {
            
$conn_id = self::connect($server);
            if (
$conn_id) {
                if (
$file{0} == '/') {
                    
$file = substr($file, 1);
                }

                if (
ftp_size($conn_id, $file) !== -1) {
                    return 
TRUE;
                }
            }
        }
        
        return 
FALSE;
    }
    
    public static function 
download($server, $file, $dst)
    {
        if (!
is_array($server)) {
            
$server = self::get($server);
        }
        
        if (
$server) {
            
$conn_id = self::connect($server);
            
            if (
$conn_id) {
                if (
$file{0} == '/') {
                    
$file = substr($file, 1);
                }
            
                if (
ftp_get($conn_id, $dst, $file, FTP_BINARY)) {
                    
chmod($dst, 0777);
                    return 
TRUE;
                }
            }
        }
        
        return 
FALSE;        
    }
    
    public static function 
process_upload($server, $video_id, $flv, $mp4, $mp4_hd, $mobile, $conv)
    {
        
$uploaded    = true;
    
        if (
$flv) {
            
$dst_flv    = MEDIA_DIR.'/videos/flv/'.$video_id.'.flv';
            if (static::
upload($server, $dst_flv, '/flv/'.$video_id.'.flv')) {
                  
$uploaded = true;
                  
$conv->log('Uploaded FLV to server!');
            } else {
                  
$uploaded = false;
                
$conv->log('Failed to upload FLV to server!');
            }
        } else {
            
$conv->log('FLV not processed!');
        }

        if (
$mp4) {
              
$dst_mp4    = MEDIA_DIR.'/videos/mp4/'.$video_id.'.mp4';
              if (static::
upload($server, $dst_mp4, '/mp4/'.$video_id.'.mp4')) {
                
$conv->log('Uploaded MP4 to server!');
            } else {
                  
$uploaded = false;
                
$conv->log('Failed to upload MP4 to server!');
            }
        } else {
            
$conv->log('MP4 not processed!');
        }
        
        if (!
$uploaded) {
              return 
false;
        }
                    
        if (
$mp4_hd) {
              
$dst_mp4_hd    = MEDIA_DIR.'/videos/mp4/'.$video_id.'_hd.mp4';
            if (static::
upload($server, $dst_mp4_hd, '/mp4/'.$video_id.'_hd.mp4')) {
                
$conv->log('Uploaded MP4 HD to server!');
            } else {
                  
$uploaded = false;
                
$conv->log('Failed to upload MP4 HD to server!');
            }
        } else {
            
$conv->log('MP4 HD not processed!');
        }
                        
        if (
$mobile) {
              
$dst_mobile = MEDIA_DIR.'/videos/mobile/'.$video_id.'.mp4';
            if (static::
upload($server, $dst_mobile, '/mobile/'.$video_id.'.mp4')) {
                
$conv->log('Uploaded mobile to server!');
            } else {
                
$conv->log('Failed to upload Mobile to server!');
            }
        }
        
        if (
$uploaded) {
              
$conv->log('Updating server...');
              static::
update($server['server_id']);
              
              if (
$flv) {
                  
$conv->log('Deleting '.$dst_flv.' ...');
                  
VFile::delete($dst_flv);
              }
              
              
$conv->log('Deleting '.$dst_mp4.' ...');
              
VFile::delete($dst_mp4);

              if (
$mp4_hd) {
                  
$conv->log('Deleting '.$dst_mp4_hd.' ...');
                  
VFile::delete($dst_mp4_hd);
              }
              
              
$conv->log('Deleting '.$dst_mobile.' ...');
              
VFile::delete($dst_mobile);
        }
        
        return 
$uploaded;                    
    }
    
    public static function 
update($server_id)
    {
          
VF::factory_remove('database');
          
VF::factory('database')->query(
              
"UPDATE #__server
             SET last_used = '"
.date('Y-m-d H:i:s')."',
                 total_videos = total_videos+1
             WHERE server_id = "
.$server_id."
            LIMIT 1"
);
    }
    
    public static function 
connect($server)
    {
        
$conn_id    = ftp_connect($server['ftp_host'], $server['ftp_port']);
        if (!
$conn_id) {
            return 
FALSE;
        }

        if (!
ftp_login($conn_id, $server['ftp_username'], $server['ftp_password'])) {
            
self::log($video_id, 'Failed to login to FTP server!');
            return 
FALSE;
        }

        
// lets make sure base root does not contain a /
        
$root = $server['ftp_root'];
        if (
substr($root, -1) == '/') {
            
$root = substr($root, 0, -1);
        }

        if (
$root{0} == '/') {
            
$root = substr($root, 1);
        }
        
        if (!
ftp_chdir($conn_id, $root)) {
            return 
FALSE;
        }

        return 
$conn_id;
    }
}
Онлайн: 2
Реклама