Вход Регистрация
Файл: 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($dir1);
                }
                
                if (!
ftp_chdir($conn_id$dir)) {
                    return 
FALSE;
                }
                
                
$filename basename($dst);
                
ftp_pasv($conn_idTRUE);
                    
                
// when you have a lot of videos ftp_nlist is slow
                
@ftp_delete($conn_id$filename);
                                      
                if (
ftp_put($conn_id$filename$srcFTP_BINARY)) {
                    
ftp_site($conn_idsprintf('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($dir1);
                }

                if (!
ftp_chdir($conn_id$dir)) {
                      return 
FALSE;
                }
                    
                
$filename basename($file);
                
ftp_pasv($conn_idTRUE);
                  
                @
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($file1);
                }

                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($file1);
                }
            
                if (
ftp_get($conn_id$dst$fileFTP_BINARY)) {
                    
chmod($dst0777);
                    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($root0, -1);
        }

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

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